Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyahpivot Lajur MySQL ke Baris Menggunakan UNION ALL atau CROSS JOIN?

Bagaimana untuk Menyahpivot Lajur MySQL ke Baris Menggunakan UNION ALL atau CROSS JOIN?

Linda Hamilton
Lepaskan: 2025-01-20 05:56:09
asal
597 orang telah melayarinya

How to Unpivot MySQL Columns into Rows Using UNION ALL or CROSS JOIN?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan