ホームページ >データベース >mysql チュートリアル >MySQL で列挙型に基づいて条件付き結合を実行するにはどうすればよいですか?

MySQL で列挙型に基づいて条件付き結合を実行するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-13 13:55:14307ブラウズ

How Can I Perform Conditional Joins in MySQL Based on an Enumerated Type?

MySQL の条件結合: 列挙型に基づいてテーブルを動的に結合する

問題:

列 id1 を持つ MySQL テーブル スキーマを考えてみましょう。 id2 とタイプ。 type 列は、別のテーブルの名前を指定する列挙値です。タスクは、type の値に基づいて、指定されたテーブルとの結合を実行することです。

たとえば、次の条件付き結合を実行するとします。

  • Type が 'table1 の場合', join table1
  • タイプが 'table2' の場合、join table2

解決策:

MySQL は条件付き結合を直接サポートしていませんが、回避策の 1 つは、case 演算子を使用して複数テーブルの左結合を使用することです。

SELECT
t.id,
t.type,
t2.id AS id2,
t3.id AS id3

FROM t
LEFT JOIN t2 ON t2.id = t.id AND t.type = 't2'
LEFT JOIN t3 ON t3.id = t.id AND t.type = 't3'

このクエリ内:

  • メインテーブル t は t2 および t3 と結合されます。
  • LEFT JOIN の条件により、タイプ列が対応するテーブル名と一致する場合にのみ結合が実行されます。
  • 結果の行には、 t テーブルの列と、結合条件がmet.

注:

このソリューションでは、type の値に関係なく、結合される可能性のあるすべてのテーブルがデータベース内に存在する必要があります。

以上がMySQL で列挙型に基づいて条件付き結合を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。