ホームページ > データベース > mysql チュートリアル > INNER JOIN は以前の OUTER JOIN の結果をオーバーライドしますか?

INNER JOIN は以前の OUTER JOIN の結果をオーバーライドしますか?

Patricia Arquette
リリース: 2025-01-09 10:28:41
オリジナル
664 人が閲覧しました

Does an INNER JOIN Override a Prior OUTER JOIN's Results?

INNER JOIN と OUTER JOIN の併用

複数テーブルの結合クエリを実行する場合、INNER JOIN と OUTER JOIN の順序が重要です。多くの人は、OUTER JOIN の後に INNER JOIN を使用すると、OUTER JOIN の効果が打ち消されると誤解していますが、これは完全に真実ではありません。

INNER JOIN の役割

INNER JOIN は、結合テーブル内に一致する行がない行を結果セットから削除します。一致する列 (主キーと外部キーのペアなど) に NULL 値がない場合でも、これらの不一致の行は削除されます。

潜在的な問題

OUTER JOIN の効果は、INNER JOIN の ON 句が OUTER JOIN 内で除外される必要がある行を指定している場合にのみ、後続の INNER JOIN によって相殺されます。たとえば、次のクエリでは:

SELECT *
FROM person
LEFT JOIN address
ON person.address_id = address.id
INNER JOIN city
ON address.city_id = city.id
ログイン後にコピー

2 番目の ON 句では、address.city_id が NULL ではないことが必要です。これにより、LEFT JOIN の効果が無効になる可能性があります。この問題を解決するには、2 番目の JOIN を LEFT OUTER JOIN に変更する必要があります。

ベストプラクティス

結果は変わりませんが、一般的にはクエリ内で OUTER JOIN の前に INNER JOIN を置くことをお勧めします。これにより、可読性が向上し、オプションの制限が適用される前に必要な制限が確実に適用されます。また、可能な限り RIGHT OUTER JOIN の使用を避け、代わりに LEFT OUTER JOIN を使用してください。これにより、明確さと実装が容易になります。

以上がINNER JOIN は以前の OUTER JOIN の結果をオーバーライドしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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