Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Semua Lajur dalam Jadual MySQL?
Menggabungkan Semua Lajur dalam MySQL
Dalam MySQL, kata kunci kad bebas * tidak boleh digunakan dalam fungsi CONCAT() untuk menggabungkan semua lajur dalam sebuah meja. Sebaliknya, anda mesti menyenaraikan setiap nama lajur secara eksplisit:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
Sebagai alternatif, anda boleh menggunakan fungsi CONCAT_WS() untuk melangkau nilai nol:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
Jika anda mahu, anda boleh mengelakkan menentukan nama lajur secara manual dengan menggunakan pertanyaan dinamik. Dapatkan semula nama lajur jadual anda:
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
Gunakan GROUP_CONCAT untuk mendapatkan senarai nama lajur yang dipisahkan koma:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Sekarang, bina pertanyaan dinamik anda dengan menggabungkan elemen:
<code class="sql">SELECT CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;') FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable' INTO @sql;</code>
Pertanyaan ini akan menetapkan pembolehubah @sql kepada rentetan yang serupa dengan:
<code class="sql">SELECT CONCAT_WS('', col1, col2, col3, ...) AS all_columns FROM yourtable;</code>
Akhir sekali, laksanakan pertanyaan dinamik ini:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
Untuk contoh dengan SQLfiddle, rujuk sumber HTML yang disediakan.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Semua Lajur dalam Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!