sql >> Databasteknik >  >> RDS >> Mysql

SQL Select inklusive datatyp och datavärden

Du kan SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' Men för att välja fler fält måste du lägga till ytterligare en instans av INFORMATION_SCHEMA.COLUMNS igen med ett annat alias.

Men du bör inte göra detta av många anledningar.

Tekniskt sett:CROSS JOIN (tabellerna i FROM listade helt enkelt med kommatecken) är mycket påfrestande på databasservern. FROM T1, T2 kopplar ihop alla rader av T1 med alla rader av T2 och undersöker resultatraderna. Om T1 har n rader och T2 har m så har resultatet n*m rader.

Logiskt 1:Du ska inte behöva denna information för att returneras. När du anger en fråga (en SELECT) är det returnerade schemat känt; frågan avgör vilka datatyper som resultatkolumnerna är.Logiskt 2:Eftersom varje rad har samma datatyper i kolumnerna behöver du inte typinformationen returneras i varje rad. T.ex. ditt exempel som returnerar data om 1000 anställda skulle överföras i onödan på varje rad att AGE-fältet är INTEGER, NAME är VARCHAR och så vidare...

Om du på något sätt inte skulle känna till schemat för resultatet (t.ex. på grund av genererade frågor eller liknande) skulle ovanstående lösning inte hjälpa dig.




  1. Hur får man tillgång till en HSTORE-kolumn med PostgreSQL C-bibliotek (libpq)?

  2. Var uppmärksam på uppskattningar

  3. Kan SQL Server Pivot utan att känna till de resulterande kolumnnamnen?

  4. Kapslade relationer med Sequelize