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

Bagaimana untuk Menyahpivot Lajur ke Baris dalam MySQL?

Linda Hamilton
Lepaskan: 2025-01-20 05:41:08
asal
1002 orang telah melayarinya

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

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

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

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

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!

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