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中文網其他相關文章!