Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL łączy wszystkie kolumny

Aby połączyć wszystkie kolumny w tabeli, nie możesz użyć * słowo kluczowe, ale musisz wyraźnie wymienić wszystkie kolumny:

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

lub możesz użyć CONCAT_WS który pominie wartości null:

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

Jeśli nie chcesz ręcznie określać wszystkich nazw kolumn, możesz użyć zapytania dynamicznego. To zapytanie zwróci wszystkie nazwy kolumn w Twojej tabeli:

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

a używając GROUP_CONCAT możesz uzyskać listę wszystkich nazw kolumn:

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

cytowany, w formacie oddzielonym przecinkami:

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

więc teraz mamy wszystkie elementy do dynamicznego tworzenia naszego zapytania:

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;

to zapytanie ustawi ciąg @sql na coś takiego:

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

a ten kod go wykona:

PREPARE stmt FROM @sql;
EXECUTE stmt;

Zobacz skrzypce tutaj .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Warunkowe INSERT INTO MySQL - GDZIE NIE ISTNIEJE

  2. Czy istnieje odpowiednik SQLite do DESCRIBE [tabela] MySQL?

  3. Jak znaleźć brakujące indeksy w MySQL?

  4. Jak przeprowadzić migrację z MSSQL do MySQL

  5. Przykładowa baza danych MySQL