Verketten aller Spalten in MySQL
In MySQL kann das Platzhalterschlüsselwort * nicht in der CONCAT()-Funktion verwendet werden, um alle Spalten in zu verketten ein Tisch. Stattdessen müssen Sie jeden Spaltennamen explizit auflisten:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
Alternativ können Sie die Funktion CONCAT_WS() verwenden, um Nullwerte zu überspringen:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
Wenn Sie möchten, können Sie dies vermeiden Manuelle Angabe von Spaltennamen mithilfe einer dynamischen Abfrage. Rufen Sie die Spaltennamen Ihrer Tabelle ab:
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
Verwenden Sie GROUP_CONCAT, um eine durch Kommas getrennte Liste von Spaltennamen zu erhalten:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Erstellen Sie jetzt Ihre dynamische Abfrage, indem Sie Elemente verketten:
<code class="sql">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;</code>
Diese Abfrage setzt die @sql-Variable auf eine Zeichenfolge ähnlich der folgenden:
<code class="sql">SELECT CONCAT_WS('', col1, col2, col3, ...) AS all_columns FROM yourtable;</code>
Führen Sie abschließend diese dynamische Abfrage aus:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
Für ein Beispiel Konsultieren Sie mit einer SQLfiddle die bereitgestellte HTML-Quelle.
Das obige ist der detaillierte Inhalt vonWie verkette ich alle Spalten in einer MySQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!