我在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/