Heim  >  Artikel  >  Datenbank  >  Wie verkette ich MySQL-Spalten, ohne alle Spalten aufzulisten?

Wie verkette ich MySQL-Spalten, ohne alle Spalten aufzulisten?

Barbara Streisand
Barbara StreisandOriginal
2024-10-25 05:27:29852Durchsuche

How to concatenate MySQL columns without listing all columns?

So verketten Sie MySQL-Spalten effektiv

Das Verketten aller Spalten in MySQL mit dem Schlüsselwort * ist nicht möglich. Stattdessen müssen Sie alle Spalten, die Sie kombinieren möchten, explizit auflisten.

Explizite Spaltenverkettung

Um dies zu erreichen, verwenden Sie die CONCAT-Funktion:

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

Alternativ können Sie CONCAT_WS verwenden, um Nullwerte wegzulassen:

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

Dynamische Spaltenverkettung

Wenn die manuelle Spaltenspezifikation unpraktisch ist, sollten Sie den Einsatz einer dynamischen Abfrage in Betracht ziehen um alle Spaltennamen zu erhalten:

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

Kombinieren Sie dieses Ergebnis mit GROUP_CONCAT, um eine durch Kommas getrennte Liste von Spaltennamen in Anführungszeichen zu generieren:

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

Vollständige dynamische Abfrage

Mit diesen Elementen können Sie eine dynamische Abfrage erstellen:

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;

Diese Abfrage generiert eine Zeichenfolge ähnlich wie:

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

Führen Sie diese Zeichenfolge aus mit:

PREPARE stmt FROM @sql;
EXECUTE stmt;

Dieser Ansatz macht eine manuelle Spaltenauflistung überflüssig und gewährleistet eine dynamische und skalierbare Verkettung.

Das obige ist der detaillierte Inhalt vonWie verkette ich MySQL-Spalten, ohne alle Spalten aufzulisten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn