ホームページ > データベース > mysql チュートリアル > MySQL LEFT JOIN がプライマリ テーブルのすべての行ではなく 1 行だけを返すのはなぜですか?

MySQL LEFT JOIN がプライマリ テーブルのすべての行ではなく 1 行だけを返すのはなぜですか?

Susan Sarandon
リリース: 2024-12-28 06:01:13
オリジナル
362 人が閲覧しました

Why Does My MySQL LEFT JOIN Only Return One Row Instead of All Rows from the Primary Table?

左結合ですべての行が返されない

元の質問:

左外部結合は、プライマリ テーブル内のすべての行ではなく、1 行のみを返します。結合条件には、セカンダリ テーブルのフィールドに対するフィルターが含まれます。フィールドがフィルター基準を満たすセカンダリ テーブルの値を含め、プライマリ テーブルのすべての行を選択するにはどうすればよいですか?

解決策:

問題の原因は次のとおりです。 JOIN の後に WHERE 条件を置きます。これを JOIN 句自体に移動することで、クエリは結合がフィルター条件を満たす行のみと一致することを保証します。変更されたクエリは次のとおりです。

SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
ログイン後にコピー

このクエリでは、JOIN の後の別の WHERE 句に WHERE 条件が含まれなくなりました。代わりに、これが JOIN の ON 句に組み込まれ、pr7.field が 23 である行のみが結合されるようになりました。これにより、jos_hp_properties2 に一致しない行も含め、jos_hp_properties のすべての行を選択できるようになり、pr7.value に NULL 値が設定されます。

以上がMySQL LEFT JOIN がプライマリ テーブルのすべての行ではなく 1 行だけを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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