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

Parametriseret tabelnavn

Den eneste måde, uden at opbygge forespørgsler dynamisk, er at hårdkode i hver kombination og vælge den, du ønsker.


Hvis tabelnavnet er en parameter til en lagret procedure, kan dette være i IF-blokke. Men det føles klodset.


Hvis felterne fra hver tabel er ens, kan du samle tabellerne og vælge blandt dem...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, * FROM Table1
UNION SELECT 'Table2' AS tableName, * FROM Table2
UNION SELECT 'Table3' AS tableName, * FROM Table3
-- etc

SELECT * FROM myUnifiedStructure WHERE tableName = 'Table1'


Hvis felterne er forskellige i hver tabel, er du muligvis kun interesseret i en delmængde af felterne...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, field1 AS field1, field4 AS field2 FROM Table1
UNION SELECT 'Table2' AS tableName, field2 AS field1, field3 AS field2 FROM Table2
UNION SELECT 'Table3' AS tableName, field2 AS field1, field4 AS field2 FROM Table3
-- etc


Eller du kan indsætte NULL'er for felter, der ikke findes i kildetabellen...

CREATE VIEW myUnifiedStructure AS
      SELECT 'Table1' AS tableName, NULL   AS field1, field2 AS field2 FROM Table1
UNION SELECT 'Table2' AS tableName, field1 AS field1, field2 AS field2 FROM Table2
UNION SELECT 'Table3' AS tableName, field1 AS field1, NULL   AS field2 FROM Table3
-- etc


  1. Underforespørgsel som genereret kolonne i mysql?

  2. PHP/Mysql specialtegnsindsættelser afkortes

  3. Regneark vs. databaser:Er det tid til at skifte? Del 2

  4. MySQL Workbench få adgang til administration?