ホームページ >データベース >mysql チュートリアル >SQL 左結合ですべての行ではなく 1 行だけが返されるのはなぜですか?

SQL 左結合ですべての行ではなく 1 行だけが返されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-12 13:25:14295ブラウズ

Why Does My SQL Left Join Only Return One Row Instead of All Rows?

SQL クエリが左結合ですべての行を返さない

このクエリは、jos_hp_properties テーブル (pr と短縮) からすべての行を取得することを目的としています。 jos_hp_properties2 テーブル (pr7 と短縮) の値を使用します。フィールドの名前はフィールドは、後者のテーブルの 23 に相当します。ただし、jos_hp_properties テーブルには 27 行が含まれているにもかかわらず、現在のクエリは 1 行のみを返します。

この問題に対処するには、次のように 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

この変更されたクエリでは、WHERE 句は結合前の結果セットを制限しなくなりました。代わりに、jos_hp_properties2 テーブルのフィールド 23 に対応する行がない場合でも、jos_hp_properties テーブルの行が含まれます (この場合、戻り値は NULL になります)。これにより、最初のテーブルのすべての行が、該当する場合は 2 番目のテーブルから必要なデータとともに返されるようになります。

以上がSQL 左結合ですべての行ではなく 1 行だけが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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