首頁 > 資料庫 > mysql教程 > 如何連接 MySQL 列而不列出所有列?

如何連接 MySQL 列而不列出所有列?

Barbara Streisand
發布: 2024-10-25 05:27:29
原創
986 人瀏覽過

How to concatenate MySQL columns without listing all columns?

如何有效連接 MySQL 欄位

使用 * 關鍵字連接 MySQL 中的所有欄位是不可行的。相反,您需要明確列出要組合的所有列。

明確列串聯

要實現此目的,請使用CONCAT 函數:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
登入後複製

或者,您可以利用CONCAT_WS 省略空值:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
登入後複製

動態列串聯

如果手動指定列不方便,請考慮使用動態查詢來取得所有欄位名稱:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable'
登入後複製

將此結果與GROUP_CONCAT 組合以產生以逗號分隔的引用列名稱清單:

GROUP_CONCAT(CONCAT('`', column_name, '`'))
登入後複製

完整動態查詢

使用這些元素,您可以建立動態查詢:

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;
登入後複製

此查詢產生類似於以下內容的字串:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
登入後複製

使用以下命令執行此字串:

PREPARE stmt FROM @sql;
EXECUTE stmt;
登入後複製

這種方法無需手動列出列,從而確保動態且可擴展的串聯。

以上是如何連接 MySQL 列而不列出所有列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板