ホームページ > データベース > mysql チュートリアル > テーブルをそれ自体に複数回効率的に結合するにはどうすればよいですか?

テーブルをそれ自体に複数回効率的に結合するにはどうすればよいですか?

DDD
リリース: 2025-01-07 07:16:41
オリジナル
588 人が閲覧しました

How to Efficiently Join a Table to Itself Multiple Times?

同じテーブルを 2 回結合する: 最良のアプローチを理解する

複数のテーブルを操作する場合、テーブルを 2 回結合するというタスクに直面するのが一般的です。同じ列を複数回。この課題は、別のテーブルの異なる列にリンクされた同じテーブルの情報が必要な場合に発生します。

指定されたシナリオでは、Table1.PhoneNumber1 と Table1.PhoneNumber2 に基づいて結合する、同様の構造を持つ 2 つのテーブルがあります。目標は、PhoneNumber1、PhoneNumber1 に対応する SomeOtherField、PhoneNumber2、および PhoneNumber2 に対応する SomeOtherField を含む結果セットを取得することです。

方法 1: 複数の結合

最初のメソッド以下に示すように、同じテーブルで 2 回結合する必要があります:

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2
ログイン後にコピー

これこのメソッドは、複数の結合句があるため煩雑に見えるかもしれませんが、目的のデータを効率的に取得します。

メソッド 2: OR 条件

2 番目のメソッドは、次を使用してクエリを簡素化しようとします。 ON 句の OR 条件:

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
ログイン後にコピー

ただし、このアプローチには追加の処理が必要であり、意図した結果が得られない可能性があります。 result.

最良のアプローチ

推奨されるアプローチは、方法 1 を使用し、結合ごとに明確なエイリアスを使用してテーブルを複数回結合することです。この方法は信頼性が高く、正確なデータ取得を保証します。

リファクタリングに関する考慮事項

電話番号をナチュラル キーとして使用すると、メンテナンスの問題が発生する可能性があることに注意してください。頻繁に変更します。データの整合性を維持するために人工キーの使用を検討してください。

以上がテーブルをそれ自体に複数回効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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