sql >> Database >  >> RDS >> Mysql

MySQL die alle kolommen samenvoegt

Om alle kolommen in een tabel samen te voegen, kunt u de * . niet gebruiken zoekwoord, maar u moet alle kolommen expliciet vermelden:

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

of misschien wilt u CONCAT_WS . gebruiken die null-waarden overslaat:

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

Als u niet alle kolomnamen handmatig wilt opgeven, kunt u een dynamische query gebruiken. Deze zoekopdracht retourneert alle kolomnamen van uw tabel:

SELECT `column_name` 
FROM   `information_schema`.`columns` 
WHERE  `table_schema`=DATABASE() 
       AND `table_name`='yourtable';

en met GROUP_CONCAT kunt u een lijst met alle kolomnamen verkrijgen:

GROUP_CONCAT(CONCAT('`', column_name, '`'))

geciteerd, in een door komma's gescheiden formaat:

`col1`,`col2`,`col3`,`col4`,...

dus nu hebben we alle elementen om onze query dinamisch te maken:

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;

deze query stelt de @sql-tekenreeks in op zoiets als:

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

en deze code zal het uitvoeren:

PREPARE stmt FROM @sql;
EXECUTE stmt;

Zie fiddle hier .




  1. Heeft uw bedrijf een HR-database nodig?

  2. MySQL oplopende waarde

  3. Detecteer OS Sleep and Wake Up-gebeurtenissen in Java

  4. SQLSTATE [HY000] [2002] Een verbindingspoging is mislukt.. - Bij een poging om verbinding te maken van een lokale naar een externe server