Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Select einschließlich Datentyp und Datenwerte

Sie könnten SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' AUSWÄHLEN Aber um mehr Felder auszuwählen, müssten Sie eine weitere Instanz von INFORMATION_SCHEMA.COLUMNS erneut mit einem anderen Alias ​​hinzufügen.

Aber Sie sollten dies aus vielen Gründen nicht tun.

Technisch:CROSS JOIN (die Tabellen in FROM einfach mit Komma aufgelistet) belastet den Datenbankserver sehr. FROM T1, T2 paart alle Zeilen von T1 mit allen Zeilen von T2 und untersucht die Ergebniszeilen. Wenn T1 n Zeilen und T2 m hat, dann hat das Ergebnis n*m Zeilen.

Logisch 1:Sie sollten diese Informationen nicht zurückgeben müssen. Wenn Sie eine Abfrage (ein SELECT) eingeben, ist das zurückgegebene Schema bekannt; die Abfrage bestimmt, welche Datentypen die Ergebnisspalten haben. Logisch 2:Da jede Zeile die gleichen Datentypen in den Spalten hat, müssen Sie die Typinformationen nicht in jeder Zeile zurückgeben. Z.B. Ihr Beispiel, das Daten von 1000 Mitarbeitern zurückgibt, würde unnötigerweise auf jeder Zeile übertragen dass das AGE-Feld INTEGER ist, der NAME VARCHAR ist und so weiter...

Wenn Sie das Schema des Ergebnisses irgendwie nicht kennen würden (z. B. wegen generierter Abfragen oder ähnlichem), würde Ihnen die obige Lösung nicht helfen.