ホームページ >データベース >mysql チュートリアル >MySQL クエリで同じテーブルを 2 回結合するにはどうすればよいですか?

MySQL クエリで同じテーブルを 2 回結合するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-18 09:50:12745ブラウズ

How Can I Join the Same Table Twice in a MySQL Query?

MySQL で同じテーブルで 2 回結合

MySQL の結合操作を使用すると、共通キーに基づいて複数のテーブルの行を結合できます。特定のシナリオでは、テーブルをそれ自体と 2 回結合する必要がある場合があります。この手法は、クエリ結果で同じテーブルの複数の列を表示するためによく使用されます。

使用例

ドメインとレビューという 2 つのテーブルを持つデータベースを考えてみましょう。ドメイン テーブルには、ドメイン ID (dom_id) とドメイン名 (dom_url) が含まれています。レビュー テーブルには、レビューに関係する「from」ドメインと「to」ドメインのドメイン ID (rev_dom_from、rev_dom_to) が含まれています。

レビューごとに両方のドメイン名を表示するには、ドメイン テーブルを 2 回結合する必要があります。 .

クエリ構造

これを実現するには、必要な結合ごとに LEFT JOIN を使用します。この例では、わかりやすくするために、ドメイン テーブルに toD および fromD というエイリアスを付けます。

SELECT toD.dom_url AS ToURL,
       fromD.dom_url AS FromUrl,
       rvw.*
FROM reviews AS rvw
LEFT JOIN domain AS toD
    ON toD.dom_id = rvw.rev_dom_for
LEFT JOIN domain AS fromD
    ON fromD.dom_id = rvw.rev_dom_from;

説明

  • テーブルの選択: クエリは、次から行を選択することで開始されます。レビュー テーブルに「rvw」というエイリアスを付けます。
  • First LEFT JOIN: 最初の LEFT JOIN は、「To」ドメイン ID (toD.dom_id = rvw.rev_dom_for) に基づいて、ドメイン テーブル (toD というエイリアス) をレビュー テーブルに接続します。
  • 2 番目の LEFT JOIN: 2 番目の LEFT JOIN は、ドメイン テーブルを 2 回目に取り込みます (別名: fromD) を取得し、「From」ドメイン ID (fromD.dom_id = rvw.rev_dom_from) に基づいてレビュー テーブルに接続します。
  • SELECT 句: SELECT 句は、クエリが次のように実行されることを指定します。 toD エイリアスの dom_url フィールドを ToURL として返し、fromD エイリアスの dom_url フィールドを FromUrl として返します。結果には、レビュー テーブルのすべての列 (rvw.*) も含まれます。

以上がMySQL クエリで同じテーブルを 2 回結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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