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この例は、「prefix1」や「prefix2」などの共通の接頭辞を共有する列名を選択する場合に便利です。ただし、いくつかの制限があります。
以上がスキーマの変更に基づいて MySQL の列名を動的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。