我在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行,但查询只返回一行。基于this question我认为这可能是因为where子句。jos_hp_properties2表具有字段id、属性、字段、值,其中field是第三个表的外键(我不需要从中获取数据)。
是否有方法从第一个表中选择所有行,包括字段为23的表2中的值(如果没有字段23,则为空)?

最佳答案

当然。将Where条件移动到联接:

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

关于mysql - 左连接不返回所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2700354/

10-11 08:04