ホームページ >データベース >mysql チュートリアル >左結合が左テーブルのすべての行を返さないのはなぜですか?

左結合が左テーブルのすべての行を返さないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-28 15:01:141023ブラウズ

Why Doesn't My Left Join Return All Rows From the Left Table?

左結合ですべての行が返されない: 問題への対処

前のスレッドで説明したように、左結合にすべての行が存在しないクエリは、不適切に配置された WHERE 句に起因する可能性があります。この場合、クエリは「jos_hp_properties」テーブルからデータを抽出し、フィールド列が 23 に等しいことに基づいて「jos_hp_properties2」テーブルから「room_price_high」という名前の値をオプションで選択することを目的としています。

これを解決するには最初のテーブルからすべての行が返されるように発行して、WHERE 条件を LEFT OUTER の後の元の位置から再配置する必要があります。 JOIN ステートメントを 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 条件を組み込むことにより、クエリはより明示的になり、フィールド列が 23 に等しい 2 番目のテーブルから行のみを取得するようにデータベースに指示されます。これにより、一致する値が 2 番目のテーブルに存在するかどうかに関係なく、最初のテーブルのすべての行が返されます。その結果、field=23 基準に基づいて、2 番目のテーブルに一致する行がない最初のテーブルの行に対して、対応する NULL 値が返されます。

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

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