sql >> Base de Datos >  >> RDS >> Mysql

MySQL concatenando todas las columnas

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í .