Membentuk Semula Data daripada Format Panjang ke Lebar dalam MySQL
Dalam MySQL, data selalunya disimpan dalam format panjang atau tinggi, di mana berbilang atribut disimpan dalam baris berasingan untuk entiti yang sama. Walau bagaimanapun, untuk tujuan analisis dan pelaporan, adalah lebih mudah untuk mempunyai data dalam format yang luas, di mana setiap baris mewakili entiti dan setiap lajur mewakili atribut.
Bolehkah MySQL digunakan untuk menukar data format panjang ke format lebar tanpa skrip luaran? Ya, ia mungkin menggunakan keupayaan jadual pangsi MySQL yang berkuasa.
Mencipta Jadual Lebar
Ambil Senarai Kunci: Dapatkan semula semua kunci berbeza yang terdapat dalam jadual format panjang menggunakan pertanyaan seperti:
SELECT DISTINCT key FROM table;
Mengisi Nilai Jadual
Gunakan pertanyaan tab silang untuk mengisi nilai dalam jadual lebar. Pertanyaan berikut menunjukkan ini:
SELECT country, MAX(IF(key='President', value, NULL)) AS President, MAX(IF(key='Currency', value, NULL)) AS Currency, ... -- Add other key-value pairs as needed FROM table GROUP BY country;
Pertanyaan ini menyemak setiap baris dalam jadual panjang dan hanya mengembalikan nilai terkini untuk setiap pasangan nilai kunci untuk negara tersebut. Fungsi MAX dengan keadaan IF memastikan bahawa nilai terbaharu dikekalkan.
Sebagai contoh, data input yang disediakan dalam soalan akan ditukar kepada lebar berikut format:
Input:
country | attrName | attrValue | key |
---|---|---|---|
US | President | Obama | 2 |
US | Currency | Dollar | 3 |
China | President | Hu | 4 |
China | Currency | Yuan | 5 |
Output:
country | President | Currency |
---|---|---|
US | Obama | Dollar |
China | Hu | Yuan |
Kesimpulan
Menggunakan jadual pangsi MySQL, adalah mudah untuk membentuk semula data dari panjang ke lebar format, menjadikannya lebih sesuai untuk analisis dan pelaporan. Kaedah ini cekap dan boleh digunakan pada jadual dengan sebarang bilangan atribut.
Atas ialah kandungan terperinci Bolehkah MySQL Mengubah Data Format Panjang kepada Format Luas Tanpa Skrip Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!