Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menggabungkan lajur MySQL tanpa menyenaraikan semua lajur?

Bagaimana untuk menggabungkan lajur MySQL tanpa menyenaraikan semua lajur?

Barbara Streisand
Barbara Streisandasal
2024-10-25 05:27:29852semak imbas

How to concatenate MySQL columns without listing all columns?

Cara Menggabungkan Lajur MySQL Dengan Berkesan

Menggabungkan semua lajur dalam MySQL menggunakan kata kunci * tidak boleh dilaksanakan. Sebaliknya, anda perlu menyenaraikan semua lajur yang anda ingin gabungkan secara eksplisit.

Penggabungan Lajur Eksplisit

Untuk mencapai ini, gunakan fungsi CONCAT:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable

Sebagai alternatif, anda boleh menggunakan CONCAT_WS untuk meninggalkan nilai nol:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable

Penggabungan Lajur Dinamik

Jika spesifikasi lajur manual menyusahkan, pertimbangkan untuk menggunakan pertanyaan dinamik untuk mendapatkan semua nama lajur:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'

Gabungkan hasil ini dengan GROUP_CONCAT untuk menjana senarai nama lajur yang dipetik yang dipisahkan koma:

GROUP_CONCAT(CONCAT('`', column_name, '`'))

Pertanyaan Dinamik Lengkap

Dengan elemen ini, anda boleh membina pertanyaan dinamik:

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;

Pertanyaan ini menjana rentetan serupa dengan:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable

Laksanakan rentetan ini menggunakan:

PREPARE stmt FROM @sql;
EXECUTE stmt;

Pendekatan ini menghapuskan keperluan untuk penyenaraian lajur manual, memastikan penggabungan dinamik dan berskala.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan lajur MySQL tanpa menyenaraikan semua lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn