ホームページ > データベース > mysql チュートリアル > 関連データを取得する場合、WHERE 句は MySQL の LEFT JOIN にどのような影響を与えますか?

関連データを取得する場合、WHERE 句は MySQL の LEFT JOIN にどのような影響を与えますか?

Linda Hamilton
リリース: 2024-12-18 22:46:14
オリジナル
171 人が閲覧しました

How Does the WHERE Clause Affect MySQL LEFT JOINs When Retrieving Related Data?

MySQL JOIN と WHERE 句を使用して関連データを取得する

MySQL では、テーブルを結合することで、複数のテーブルのデータを 1 つのテーブルに結合できます。結果セット。ただし、LEFT JOIN などの外部結合に WHERE 句を追加すると、結合の動作が変わる可能性があります。

問題:

次のようなシナリオを考えてみましょう。 「カテゴリ」と「user_category_subscriptions」という 2 つのテーブルがあり、特定のユーザーが特定の機能で購読しているカテゴリを含むすべてのカテゴリを取得したいとします。 "ユーザーID。"以下の最初のクエリは、2 つのテーブル間で LEFT JOIN を実行します:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id
ログイン後にコピー

Challenge:

当初の目標は、内部結合 (または等価結合) を実装することでした。 ) WHERE 句を使用します。ただし、上記のクエリは外部結合、特に左外部結合であり、「user_category_subscriptions」テーブルに対応する値がない場合でも行が返されることは妨げられません。

解決策:

望ましい結果を達成するには、WHERE 句ではなく JOIN 文自体に WHERE 句を組み込む必要があります。句:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    AND user_category_subscriptions.user_id = 1
ログイン後にコピー

左結合では、WHERE 句は結合操作のに適用されるフィルターとして機能します。 JOIN ステートメントに条件を含めることにより、結果に行が含まれるために満たす必要がある条件を効果的に指定することになります。これにより、「user_id」が 1 に等しい行のみが結合されて返されることが保証されます。

以上が関連データを取得する場合、WHERE 句は MySQL の LEFT JOIN にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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