Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyahpivot Lajur dalam MySQL untuk Menstruktur Semula Data Saya?
Pembentuk semula data MySQL: pengembangan lajur
Apabila data jadual perlu dibentuk semula, nyahpaut lajur menjadi perlu. Teknik ini menukar lajur kepada baris, memberikan perwakilan data yang lebih fleksibel. Walaupun MySQL tidak menyediakan fungsi pengembangan yang jelas, kami boleh mencapai kesan yang sama melalui pembinaan pertanyaan yang bijak.
Kaedah 1: Gunakan UNION ALL untuk membuat pertanyaan
Salah satu cara ialah menggunakan pertanyaan UNION ALL, yang menambahkan hasil beberapa pernyataan SELECT bersama-sama. Dalam contoh ini, kami mencipta pernyataan SELECT berasingan untuk setiap lajur yang perlu dikembangkan:
<code class="language-sql">select id, 'a' col, a value from yourtable union all select id, 'b' col, b value from yourtable union all select id, 'c' col, c value from yourtable</code>
Pertanyaan ini membina jadual baharu dengan setiap baris mewakili pasangan nilai lajur. Jadual yang terhasil akan mempunyai reka letak berikut:
ID | col | value |
---|---|---|
1 | a | a1 |
1 | b | b1 |
1 | c | c1 |
2 | a | a2 |
2 | b | b2 |
2 | c | c2 |
Kaedah 2: Gunakan CROSS JOIN
Pendekatan lain ialah menggunakan CROSS JOIN, yang menghasilkan produk Cartesan berbilang jadual. Menggabungkan jadual anda dengan jadual yang mengandungi nama lajur kita boleh mencapai perkara berikut:
<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>
Pertanyaan ini menghasilkan output yang sama seperti pertanyaan UNION ALL, memberikan kami perwakilan data yang fleksibel untuk analisis lanjut atau manipulasi data.
Dengan melaksanakan teknik terungkap ini dalam MySQL, anda boleh mengekstrak cerapan bermakna daripada data anda dengan berkesan dengan membentuknya semula menjadi format yang lebih mudah dilayari.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahpivot Lajur dalam MySQL untuk Menstruktur Semula Data Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!