Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Spalten in MySQL mithilfe des Informationsschemas dynamisch aus?
Dynamische Spaltenauswahl in MySQL
In MySQL kann es zu Situationen kommen, in denen Sie bestimmte Spalten basierend auf einer unbekannten oder erwarteten Tabellenstruktur abrufen müssen Schemaänderungen. Dies stellt eine Herausforderung dar, wenn es unpraktisch ist, Spaltennamen in einer SQL-Anweisung fest zu codieren. In diesem Artikel wird eine Lösung für dieses Problem untersucht, ohne jede Spalte auswählen zu müssen.
Verwendung des Informationsschemas
Die Datenbank „information_schema“ enthält Metadaten zu allen Datenbanken und Tabellen auf dem MySQL-Server. Es enthält eine Tabelle namens COLUMNS, die Informationen über Spalten speichert, einschließlich ihrer Namen, Datentypen und Tabellenmitgliedschaft.
Erstellen einer dynamischen Abfrage
Zum dynamischen Auswählen von Spalten Namen können Sie eine Kombination aus MySQL-Funktionen und der Tabelle information_schema.COLUMNS verwenden. Hier ist ein schrittweiser Ansatz:
Beispiel-SQL-Anweisung
Die folgende SQL-Anweisung zeigt, wie Spaltennamen, die mit beginnen, dynamisch ausgewählt werden „Präfix“ aus der Tabelle "atable":
CREATE TABLE atable ( prefix1 VARCHAR(10), prefix2 VARCHAR(10), notprefix3 INT, notprefix4 INT ); INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1); SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;') INTO @query FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'atable' AND c.COLUMN_NAME LIKE 'prefix%' ORDER BY c.ORDINAL_POSITION; PREPARE stmt FROM @query; EXECUTE stmt;
Ausgabe:
Die Ausgabe dieser Anweisung ist eine einzelne Zeile mit der folgenden SQL-Anweisung:
SELECT prefix1, prefix2 FROM atable;
Durch Ausführen dieser Anweisung rufen Sie nur die Spalten „prefix1“ und „prefix2“ aus der Tabelle „atable“ ab.
Das obige ist der detaillierte Inhalt vonWie wähle ich Spalten in MySQL mithilfe des Informationsschemas dynamisch aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!