Um alle Spalten in einer Tabelle zu verketten, können Sie den *
nicht verwenden Schlüsselwort, aber Sie müssen alle Spalten explizit auflisten:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
oder Sie möchten vielleicht CONCAT_WS
verwenden die Nullwerte überspringt:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Wenn Sie nicht alle Spaltennamen manuell angeben möchten, können Sie eine dynamische Abfrage verwenden. Diese Abfrage gibt alle Spaltennamen Ihrer Tabelle zurück:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
und mit GROUP_CONCAT erhalten Sie eine Liste aller Spaltennamen:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
in Anführungszeichen, in einem durch Kommas getrennten Format:
`col1`,`col2`,`col3`,`col4`,...
Jetzt haben wir also alle Elemente, um unsere Abfrage dynamisch zu erstellen:
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;
Diese Abfrage setzt die @sql-Zeichenfolge auf etwas wie:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
und dieser Code wird es ausführen:
PREPARE stmt FROM @sql;
EXECUTE stmt;
Siehe fiddle hier .