動態連接所有 MySQL 列
在 MySQL 中,不支援使用 * 通配符連接所有列。相反,您需要在 CONCAT() 或 GROUP_CONCAT() 函數中明確指定每個列名稱。
明確列連接:
您可以使用CONCAT()連接特定列的函數:
SELECT CONCAT(col1, col2, col3, ...)
FROM yourtable;
或者,使用CONCAT_WS() 將列與指定分隔符號連接起來,跳過空值:
SELECT CONCAT_WS(',', col1, col2, col3, ...)
FROM yourtable;
動態列串聯:
要避免手動指定列名稱,您可以使用動態查詢從information_schema.columns 表中檢索所有列名稱:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema` = DATABASE()
AND `table_name` = 'yourtable';
然後,使用GROUP_CONCAT() 組合這些列名:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
這將產生一個以逗號分隔的帶引號的列名稱列表,例如:
`col1`,`col2`,`col3`,`col4`,...
有了這個,您可以建立一個動態查詢來連接所有列:
SET @sql = CONCAT(
'SELECT CONCAT_WS(\'\',',
GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name),
') AS all_columns FROM yourtable;'
);
最後執行動態查詢:
PREPARE stmt FROM @sql;
EXECUTE stmt;
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3