Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan tabel pivot MySQL dengan kolom dinamis

Satu-satunya cara di MySQL untuk melakukan ini secara dinamis adalah dengan pernyataan Disiapkan. Ini artikel bagus tentang mereka:

Tabel pivot dinamis (mengubah baris menjadi kolom)

Kode Anda akan terlihat seperti ini:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pa.fieldname = ''',
      fieldname,
      ''', pa.fieldvalue, NULL)) AS ',
      fieldname
    )
  ) INTO @sql
FROM product_additional;

SET @sql = CONCAT('SELECT p.id
                    , p.name
                    , p.description, ', @sql, ' 
                   FROM product p
                   LEFT JOIN product_additional AS pa 
                    ON p.id = pa.id
                   GROUP BY p.id, p.name, p.description');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Lihat Demo

CATATAN:Fungsi GROUP_CONCAT memiliki batas 1024 karakter. Lihat parameter group_concat_max_len



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dalam SQL / MySQL, apa perbedaan antara ON dan WHERE dalam pernyataan bergabung?

  2. Kesalahan MYSQLi:Pengguna sudah memiliki lebih dari 'max_user_connections' koneksi aktif

  3. Tentukan file konfigurasi MySQL mana yang digunakan

  4. Cara Menyisipkan data dari satu tabel database ke tabel database lain di Mysql

  5. Cara Menghapus Pengguna Database MySQL di cPanel