Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyahpivot Lajur ke Baris dalam MySQL?

Bagaimana untuk Menyahpivot Lajur ke Baris dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-20 05:41:081003semak imbas

How to Unpivot Columns into Rows in MySQL?

Helah untuk menukar lajur kepada baris dalam MySQL

Apabila bekerja dengan data tersusun lajur dalam MySQL, anda mungkin perlu menukarnya kepada format yang memaparkan data dalam baris. Proses ini dipanggil unpivoting.

Soalan:

Pertimbangkan borang berikut:

<code>ID | a  | b  | c 
1  | a1 | b1 | c1
2  | a2 | b2 | c2</code>

Matlamatnya adalah untuk menukar lajur kepada baris untuk mendapatkan jadual dengan struktur berikut:

<code>ID | 值 | 列名
1  | a1 | a
1  | b1 | b
1  | c1 | c
2  | a2 | a
2  | b2 | b
2  | c2 | c</code>

Penyelesaian:

Tidak seperti beberapa pangkalan data lain, MySQL tidak mempunyai fungsi pelepasan terbina dalam. Untuk mendapatkan hasil yang anda inginkan, anda boleh menggunakan pertanyaan UNION ALL untuk menggabungkan pertanyaan berasingan yang secara selektif menukar setiap lajur kepada baris:

<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 menjana tiga set data: satu untuk setiap lajur. Setiap kumpulan mengandungi ID, nama lajur dan nilai yang sepadan.

Gunakan CROSS JOIN:

Cara lain ialah menggunakan CROSS JOIN:

<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>

Dalam kes ini, CROSS JOIN mencipta produk Cartesian antara baris yourtable dan baris subkueri yang menjana nama lajur. Kenyataan CASE memetakan setiap nama lajur kepada nilai lajur yang sepadan.

Kedua-dua kaedah melepaskan data dengan berkesan, memberikan anda struktur berasaskan baris yang anda inginkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyahpivot Lajur ke Baris dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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