ホームページ >データベース >mysql チュートリアル >左結合が左テーブルのすべての行を返さないのはなぜですか?
左結合ですべての行が返されない: 問題への対処
前のスレッドで説明したように、左結合にすべての行が存在しないクエリは、不適切に配置された 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 サイトの他の関連記事を参照してください。