MySQL 中的动态列名选择
使用结构可能经常更改的 MySQL 表时,选择特定列名可能会很困难硬编码在 SQL 语句中。为了克服这个问题,可以采用一种技术,根据表的当前模式动态选择列名。
为了回答所提出的问题,提供了一个 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;
This example 对于选择共享公共前缀的列名非常有用,例如“prefix1”和“prefix2”。但是,它有一些限制:
以上是MySQL如何根据Schema的变化动态选择列名?的详细内容。更多信息请关注PHP中文网其他相关文章!