Para concatenar todas las columnas en una tabla, no puede usar el *
palabra clave, pero debe enumerar explícitamente todas las columnas:
SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable
o es posible que desee utilizar CONCAT_WS
que omitirá valores nulos:
SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable
Si no desea especificar todos los nombres de las columnas manualmente, puede usar una consulta dinámica. Esta consulta devolverá todos los nombres de columna de su tabla:
SELECT `column_name`
FROM `information_schema`.`columns`
WHERE `table_schema`=DATABASE()
AND `table_name`='yourtable';
y usando GROUP_CONCAT puede obtener una lista de todos los nombres de columna:
GROUP_CONCAT(CONCAT('`', column_name, '`'))
citado, en formato separado por comas:
`col1`,`col2`,`col3`,`col4`,...
así que ahora tenemos todos los elementos para crear nuestra consulta dinámicamente:
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;
esta consulta establecerá la cadena @sql en algo como:
SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable
y este código lo ejecutará:
PREPARE stmt FROM @sql;
EXECUTE stmt;
Consulte fiddle aquí .