Menggabungkan Semua Lajur MySQL Secara Dinamik
Dalam MySQL, menggabungkan semua lajur menggunakan kad bebas * tidak disokong. Sebaliknya, anda perlu menyatakan secara eksplisit setiap nama lajur dalam fungsi CONCAT() atau GROUP_CONCAT().
Penggabungan Lajur Eksplisit:
Anda boleh menggunakan CONCAT() berfungsi untuk menggabungkan lajur tertentu:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
Atau, gunakan CONCAT_WS() untuk menggabungkan lajur dengan pemisah yang ditentukan, melangkau nilai nol:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
Penggabungan Lajur Dinamik:
Untuk mengelak daripada menentukan nama lajur secara manual, anda boleh menggunakan pertanyaan dinamik untuk mendapatkan semua nama lajur daripada jadual information_schema.columns:
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
Kemudian, gunakan GROUP_CONCAT() untuk menggabungkan nama lajur ini:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Ini akan menghasilkan senarai nama lajur yang dipetik yang dipisahkan koma, seperti:
<code class="sql">`col1`,`col2`,`col3`,`col4`,...</code>
Dengan ini, anda boleh mencipta pertanyaan dinamik untuk digabungkan semua lajur:
<code class="sql">SET @sql = CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;' );</code>
Akhir sekali, laksanakan pertanyaan dinamik:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Semua Lajur MySQL Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!