Menstruktur semula Lajur MySQL ke dalam Baris
Transformasi data ialah tugas biasa dalam pengurusan pangkalan data. Dalam MySQL, menukar data lajur kepada baris—suatu proses yang dikenali sebagai unpivoting—selalunya diperlukan untuk analisis atau pembentangan data yang lebih baik. Walaupun MySQL tidak mempunyai fungsi unpivot khusus, transformasi ini boleh dicapai dengan cekap menggunakan sama ada pertanyaan UNION ALL
atau CROSS JOIN
.
Kaedah UNION ALL
Satu strategi berkesan menggunakan operator UNION ALL
:
<code class="language-sql">SELECT id, 'a' AS col, a AS value FROM yourtable UNION ALL SELECT id, 'b' AS col, b AS value FROM yourtable UNION ALL SELECT id, 'c' AS col, c AS value FROM yourtable;</code>
Pertanyaan ini mendapatkan semula lajur id
bersebelahan dengan nama lajur (col
) dan nilai sepadannya (value
). Hasilnya ialah set data yang disusun semula dengan setiap baris mewakili pasangan nilai lajur tunggal.
Pendekatan CROSS JOIN
Sebagai alternatif, CROSS JOIN
boleh digunakan:
<code class="language-sql">SELECT t.id, c.col, CASE c.col WHEN 'a' THEN a WHEN 'b' THEN b WHEN 'c' THEN c END AS data FROM yourtable t CROSS JOIN ( SELECT 'a' AS col UNION ALL SELECT 'b' UNION ALL SELECT 'c' ) c;</code>
Di sini, yourtable
(alias sebagai t
) digabungkan dengan subkueri yang menjana senarai nama lajur (col
). Penyataan CASE
secara dinamik memilih nilai yang sesuai berdasarkan nama lajur. Hasilnya, sama seperti kaedah UNION ALL
, ialah set data yang diratakan dengan setiap baris mengandungi id
, nama lajur dan nilai yang berkaitan.
Kedua-dua teknik UNION ALL
dan CROSS JOIN
menyediakan penyelesaian yang mantap untuk menyahpaut lajur dalam MySQL, membolehkan penukaran data kolumnar kepada baris untuk pemprosesan atau visualisasi seterusnya.
Atas ialah kandungan terperinci Bagaimana untuk Menyahpivot Lajur MySQL ke Baris Menggunakan UNION ALL atau CROSS JOIN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!