Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Seleziona incluso Tipo di dati e Valori di dati

Puoi SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' Ma per selezionare più campi, dovresti aggiungere di nuovo un'altra istanza di INFORMATION_SCHEMA.COLUMNS con un alias diverso.

Ma non dovresti farlo per molte ragioni.

Tecnicamente:CROSS JOIN (le tabelle in FROM elencate semplicemente con una virgola) è molto stressante per il server del database. FROM T1, T2 accoppia tutte le righe di T1 con tutte le righe di T2 ed esamina le righe dei risultati. Se T1 ha n righe e T2 ha m, il risultato ha n*m righe.

Logicamente 1:non dovresti aver bisogno di queste informazioni per essere restituite. Quando si immette una query (a SELECT) lo schema restituito è noto; la query determina quali tipi di dati sono le colonne dei risultati. Logicamente 2:poiché ogni riga ha gli stessi tipi di dati nelle colonne, non è necessario che le informazioni sul tipo vengano restituite in ogni riga. Per esempio. il tuo esempio che restituisce i dati di 1000 dipendenti verrebbe trasferito inutilmente su ogni riga che il campo AGE sia INTEGER, il NAME sia VARCHAR e così via...

Se in qualche modo non conoscessi lo schema del risultato (ad es. a causa di query generate o simili), la soluzione di cui sopra non ti aiuterebbe.