Penukaran baris ke lajur MySQL: pelaksanaan nombor lajur dinamik
Dalam MySQL, anda boleh menukar baris menjadi lajur dengan cekap walaupun bilangan lajur tidak diketahui, dengan menggabungkan fungsi agregat dan pertanyaan dinamik.
Pertanyaan pangsi menggunakan pernyataan CASE
Untuk memutar jadual yang disebut dalam soalan, gunakan fungsi COUNT() dengan pernyataan CASE:
SELECT pt.partner_name, COUNT(CASE WHEN pd.product_name = 'Product A' THEN 1 END) AS ProductA, COUNT(CASE WHEN pd.product_name = 'Product B' THEN 1 END) AS ProductB, COUNT(CASE WHEN pd.product_name = 'Product C' THEN 1 END) AS ProductC, COUNT(CASE WHEN pd.product_name = 'Product D' THEN 1 END) AS ProductD, COUNT(CASE WHEN pd.product_name = 'Product E' THEN 1 END) AS ProductE FROM partners pt LEFT JOIN sales s ON pt.part_id = s.partner_id LEFT JOIN products pd ON s.product_id = pd.prod_id GROUP BY pt.partner_name;
Pangsi Dinamik menggunakan pernyataan yang disediakan
Untuk menjana pertanyaan pangsi secara dinamik berdasarkan bilangan produk, anda boleh menggunakan pernyataan yang disediakan:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'COUNT(CASE WHEN Product_Name = ''', Product_Name, ''' THEN 1 END) AS ', REPLACE(Product_Name, ' ', '') ) ) INTO @sql FROM products; SET @sql = CONCAT('SELECT pt.partner_name, ', @sql, ' FROM partners pt LEFT JOIN sales s ON pt.part_id = s.partner_id LEFT JOIN products pd ON s.product_id = pd.prod_id GROUP BY pt.partner_name'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Pertanyaan ini membina pernyataan SQL secara dinamik berdasarkan jadual produk, memastikan bilangan lajur dalam hasil carian sepadan dengan bilangan produk.
Respons yang disemak ini mengekalkan imej dan memberikan penulisan semula kandungan teknikal yang lebih ringkas dan semula jadi. Perubahan utama ialah frasa dan struktur ayat yang lebih baik untuk kebolehbacaan yang lebih baik sambil mengekalkan makna asal.
Atas ialah kandungan terperinci Bagaimana untuk memaparkan baris MySQL ke dalam bilangan lajur yang dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!