Pemilihan Lajur Dinamik dalam MySQL
Dalam MySQL, mungkin timbul senario di mana anda perlu mendapatkan semula lajur tertentu berdasarkan struktur jadual yang tidak diketahui atau dijangka perubahan skema. Ini menimbulkan cabaran apabila nama lajur pengekodan keras dalam pernyataan SQL tidak praktikal. Artikel ini meneroka penyelesaian kepada masalah ini tanpa perlu memilih setiap lajur.
Menggunakan Skema Maklumat
Pangkalan data information_schema mengandungi metadata tentang semua pangkalan data dan jadual pada pelayan MySQL. Ia termasuk jadual yang dipanggil COLUMNS, yang menyimpan maklumat tentang lajur, termasuk nama, jenis data dan keahlian jadual.
Membina Pertanyaan Dinamik
Untuk memilih lajur secara dinamik nama, anda boleh menggunakan gabungan fungsi MySQL dan jadual information_schema.COLUMNS. Berikut ialah pendekatan langkah demi langkah:
Contoh Pernyataan SQL
Pernyataan SQL berikut menunjukkan cara memilih nama lajur secara dinamik mulakan dengan "awalan" daripada jadual "atable":
CREATE TABLE atable ( prefix1 VARCHAR(10), prefix2 VARCHAR(10), notprefix3 INT, notprefix4 INT ); INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1); SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;') INTO @query FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'atable' AND c.COLUMN_NAME LIKE 'prefix%' ORDER BY c.ORDINAL_POSITION; PREPARE stmt FROM @query; EXECUTE stmt;
Output:
Output pernyataan ini akan menjadi satu baris yang mengandungi pernyataan SQL berikut:
SELECT prefix1, prefix2 FROM atable;
Dengan melaksanakan pernyataan ini, anda hanya akan mendapatkan semula lajur "prefix1" dan "prefix2" daripada "atable" meja.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Lajur Secara Dinamik dalam MySQL Menggunakan Skema Maklumat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!