MySQL で動的 SQL を使用して、類似したプレフィックスを持つ列からデータを選択する方法

Linda Hamilton
リリース: 2024-11-03 08:38:02
オリジナル
1000 人が閲覧しました

How to Select Data from Columns with Similar Prefixes using Dynamic SQL in MySQL?

ワイルドカード列選択のための動的 SQL

質問:

データベース テーブルがあるとします。 「果物」や「野菜」など、同様の接頭辞を共有する複数の列があります。各列名を手動で指定せずに、特定の単語で始まるすべての列からデータを効率的に選択するにはどうすればよいですか?

例:

次のテーブル構造を考えてみましょう:

<code class="markdown">Foods | Fruit | Vegetable
----------------------
Apples | Banana | Carrots
Pears | Grapes | Potatoes
Oranges | Lemon | Tomatoes</code>
ログイン後にコピー

名前が「Vagitable」で始まるすべての列を選択したいとします。

答え:

SELECT などの MySQL クエリでの直接ワイルドカード置換野菜%はサポートされていません。この基準を満たすすべての列を動的に選択するには、データベース スキーマから取得した情報に基づいて SQL クエリを構築します。解決策は次のとおりです。

<code class="sql">SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Foods'
  AND table_schema = 'YourDB'
  AND column_name LIKE 'Vegetable%'</code>
ログイン後にコピー

このクエリは、Foods テーブル内の「野菜」で始まるすべての列の名前を取得します。次に、この情報を使用して、目的の列からデータを選択する 2 番目のクエリを動的に構築できます。

<code class="php">$columnList = mysql_query($columnsQuery);
$columnArray = array();
while ($row = mysql_fetch_assoc($columnList)) {
  array_push($columnArray, $row['COLUMN_NAME']);
}
$columns = implode(",", $columnArray);

$query = "SELECT " . $columns . " FROM Foods";</code>
ログイン後にコピー

このクエリを実行すると、名前が " Vegetable" で始まる列からすべてのデータを取得できます。シングルパス

以上がMySQL で動的 SQL を使用して、類似したプレフィックスを持つ列からデータを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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