Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL конкатенация на всички колони

За да свържете всички колони в таблица, не можете да използвате * ключова дума, но трябва изрично да посочите всички колони:

SELECT CONCAT(col1, col2, col3, ....)
FROM yourtable

или може да искате да използвате CONCAT_WS което ще пропусне нулеви стойности:

SELECT CONCAT_WS(',', col1, col2, col3, ....)
FROM yourtable

Ако не искате да посочите всички имена на колони ръчно, можете да използвате динамична заявка. Тази заявка ще върне всички имена на колони на вашата таблица:

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`,...

така че сега имаме всички елементи, за да създадем динамично нашата заявка:

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;

тази заявка ще зададе низа @sql на нещо като:

SELECT CONCAT_WS('', col1, col2, col3, ....) AS all_columns FROM yourtable

и този код ще го изпълни:

PREPARE stmt FROM @sql;
EXECUTE stmt;

Моля, вижте цигулка тук .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ASP, MySQL и UTF-8

  2. MySQL данни - Най-добрият начин за прилагане на пейджинг?

  3. Двигател за съхранение на Mysql за таблица с регистрационни файлове

  4. Как да накарам mysql да приема външни връзки

  5. mysql:използвайте SET или много колони?