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

Sådan vælger du kolonnenavne dynamisk i mySQL

Prøv denne SQLFiddle :

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;

Nogle problemer:

Du vil sandsynligvis have en form for ORDER BY på dit resultatsæt.

Der er en grænse for, hvad du kan gøre med hensyn til joins og ting.

Du flytter validering til runtime, hvor der er større sandsynlighed for, at den går glip af ved test.

Du håber nemt at kunne håndtere skemaændringer. Denne teknik vil kun håndtere skemaændringer af en bestemt type, du kan forudse, og andre vil du sandsynligvis alligevel skulle ændre denne kode.




  1. Sådan tjekker du MySQL-versionen

  2. Skal jeg oprette indekser på fremmednøgler på Oracle?

  3. 2 måder at vise alle databaser i PostgreSQL (psql)

  4. Sammenkædning i Transact-SQL