Heim >Datenbank >MySQL-Tutorial >Wie verkette ich MySQL-Spalten, ohne alle Spalten aufzulisten?
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!