Um Spaltennamen für die Verwendung in Abfragen zu erstellen, müssen Sie benutzerdefinierte Variablen über den Set-Befehl verwenden. Die Syntax lautet wie folgt: -
SET @anyVariableName := ( SELECT CONCAT ( "SELECT", GROUP_CONCAT(CONCAT(" 1 as ", COLUMN_NAME) SEPARATOR ','), " FROM DUAL") FROM INFORMATION_SCHEMA_COLUMNS WHERE TABLE_NAME= ‘yourTableName’ );
Verwenden Sie nun den PREPARE-Befehl, um die Anweisung vorzubereiten. Die Syntax lautet wie folgt:
PREPARE anyVariableName from @anyVariableName;
Verwenden Sie den Befehl EXECUTE, um die Anweisung auszuführen. Die Syntax lautet wie folgt:
EXECUTE anyVariableName;
Verwenden Sie den Befehl DEALLOCATE, um die Zuordnung der vorbereiteten Anweisung freizugeben. Die Syntax lautet wie folgt:
DEALLOCATE PREPARE anyVariableName;
Wir erstellen nun eine Tabelle mit zwei Spalten und diese Spalte wird in der Join-Abfrage verwendet. Die Abfrage zum Erstellen der Tabelle lautet wie folgt:
mysql> create table ConcatenationWithUserDefinedVariable -> ( -> Id int NOT NULL AUTO_INCREMENT, -> User_Id int, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (1.14 sec)
Verwenden Sie die obige Syntax für die Spaltennamen, die in der Abfrage verwendet werden sollen. Die Abfrage lautet wie folgt: -
mysql> set @q := ( -> select concat( -> "select", -> group_concat(concat(" 1 as ", column_name) separator ','), -> "from dual") -> from information_schema.columns -> where table_name = 'ConcatenationWithUserDefinedVariable'); Query OK, 0 rows affected (0.01 sec)
Die Vorbereitung der Abfrage für die oben genannten benutzerdefinierten Variablen lautet wie folgt: -
mysql> prepare stmt from @q; Query OK, 0 rows affected (0.00 sec) Statement prepared
Führen Sie nun die oben vorbereitete Anweisung aus. Die Abfrage lautet wie folgt:
mysql> execute stmt;
Das Folgende ist die Ausgabe:
+----+---------+ | Id | User_Id | +----+---------+ | 1 | 1 | +----+---------+ 1 row in set (0.00 sec)
Schließlich müssen Sie die vorbereitete Anweisung freigeben. Die Abfrage lautet wie folgt:
mysql> deallocate prepare stmt; Query OK, 0 rows affected (0.00 sec)
Das obige ist der detaillierte Inhalt vonMySQL concat() erstellt Spaltennamen zur Verwendung in Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!