MySQL 中的動態列選擇
在MySQL 中,可能會出現需要根據未知的表結構或預期檢索特定列的情況架構更改。當在 SQL 語句中硬編碼列名不切實際時,這就帶來了挑戰。本文探討了解決此問題的方法,而無需選擇每一列。
利用資訊架構
information_schema 資料庫包含有關 MySQL 伺服器上所有資料庫和資料表的元資料。它包括一個名為 COLUMNS 的表,其中儲存有關列的信息,包括列的名稱、資料類型和表成員身份。
建構動態查詢
動態選擇列名稱,您可以利用 MySQL 函數和 information_schema.COLUMNS 表的組合。以下是逐步方法:
範例 SQL 語句
以下 SQL 語句示範如何動態選取以開頭的列名稱表中的「前綴” "atable":
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;
輸出:
此語句的輸出將是包含下列SQL 語句的單行:
SELECT prefix1, prefix2 FROM atable;
透過執行此語句,您將僅從“atable”中檢索列“prefix1”和“prefix2”表。
以上是如何使用資訊模式動態選擇 MySQL 中的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!