Heim >Datenbank >MySQL-Tutorial >Wie verkette ich alle MySQL-Spalten dynamisch?
Dynamisches Verketten aller MySQL-Spalten
In MySQL wird das Verketten aller Spalten mit dem Platzhalter * nicht unterstützt. Stattdessen müssen Sie jeden Spaltennamen explizit in den Funktionen CONCAT() oder GROUP_CONCAT() angeben.
Explizite Spaltenverkettung:
Sie können CONCAT() verwenden. Funktion zum Verketten bestimmter Spalten:
<code class="sql">SELECT CONCAT(col1, col2, col3, ...) FROM yourtable;</code>
Oder verwenden Sie CONCAT_WS(), um Spalten mit einem angegebenen Trennzeichen zu verketten und Nullwerte zu überspringen:
<code class="sql">SELECT CONCAT_WS(',', col1, col2, col3, ...) FROM yourtable;</code>
Dynamische Spaltenverkettung:
Um die manuelle Angabe von Spaltennamen zu vermeiden, können Sie eine dynamische Abfrage verwenden, um alle Spaltennamen aus der Tabelle information_schema.columns abzurufen:
<code class="sql">SELECT `column_name` FROM `information_schema`.`columns` WHERE `table_schema` = DATABASE() AND `table_name` = 'yourtable';</code>
Verwenden Sie dann GROUP_CONCAT() zum Kombinieren diese Spaltennamen:
<code class="sql">GROUP_CONCAT(CONCAT('`', column_name, '`'))</code>
Dies führt zu einer durch Kommas getrennten Liste von Spaltennamen in Anführungszeichen, wie zum Beispiel:
<code class="sql">`col1`,`col2`,`col3`,`col4`,...</code>
Damit können Sie eine dynamische Abfrage zum Verketten erstellen alle Spalten:
<code class="sql">SET @sql = CONCAT( 'SELECT CONCAT_WS(\'\',', GROUP_CONCAT(CONCAT('`', column_name, '`') ORDER BY column_name), ') AS all_columns FROM yourtable;' );</code>
Führen Sie abschließend die dynamische Abfrage aus:
<code class="sql">PREPARE stmt FROM @sql; EXECUTE stmt;</code>
Das obige ist der detaillierte Inhalt vonWie verkette ich alle MySQL-Spalten dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!