ホームページ > データベース > mysql チュートリアル > スキーマの変更に基づいて MySQL の列名を動的に選択するにはどうすればよいですか?

スキーマの変更に基づいて MySQL の列名を動的に選択するにはどうすればよいですか?

DDD
リリース: 2025-01-04 16:30:40
オリジナル
721 人が閲覧しました

How Can I Dynamically Select Column Names in MySQL Based on Schema Changes?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート