一尘不染

左联接不返回所有行

mysql

我在MySQL中有以下查询:

SELECT pr.*, pr7.value AS `room_price_high`
FROM `jos_hp_properties` pr
LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id
WHERE pr7.field=23

jos_hp_properties表有27行,但查询仅返回1行。基于
这个问题,
我认为可能是由于WHERE子句。该jos_hp_properties2表具有字段id,属性,字段,值,其中field是第三个表的外键(我不需要从中获取数据)。

有没有一种方法可以从第一个表中选择所有行,包括表#2中字段为23的值(如果没有字段23,则为NULL)?


阅读 277

收藏
2020-05-17

共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
2020-05-17