For at sammenkæde alle kolonner i en tabel kan du ikke bruge *
søgeord, men du skal udtrykkeligt angive alle kolonner:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
eller du vil måske bruge CONCAT_WS
der springer null-værdier over:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Hvis du ikke ønsker at angive alle kolonnenavne manuelt, kan du bruge en dynamisk forespørgsel. Denne forespørgsel returnerer alle kolonnenavne i din tabel:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
og ved at bruge GROUP_CONCAT kan du få en liste over alle kolonnenavne:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
citeret i et kommasepareret format:
`col1`,`col2`,`col3`,`col4`,...
så nu har vi alle elementerne til at skabe vores forespørgsel dynamisk:
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;
denne forespørgsel vil sætte @sql-strengen til noget som:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
og denne kode vil udføre den:
PREPARE stmt FROM @sql;
EXECUTE stmt;
Se venligst violin her .