首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左联接不返回所有行

左联接不返回所有行
EN

Stack Overflow用户
提问于 2010-04-23 16:45:14
回答 4查看 24K关注 0票数 20

我在MySQL中有这样的查询:

代码语言:javascript
复制
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行,但查询只返回一行。基于,我认为这可能是因为WHERE子句。jos_hp_properties2表具有字段id、property、field、value,其中field是第三个表的外键(我不需要从中获取数据)。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-23 16:48:24

好的。将WHERE条件移动到联接:

代码语言:javascript
复制
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
票数 52
EN

Stack Overflow用户

发布于 2010-04-23 16:49:37

必须将pr7条件放在联接中,而不是where子句中。where子句在执行联接后对整个结果集起作用。

代码语言:javascript
复制
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 and pr7.field=23
票数 11
EN

Stack Overflow用户

发布于 2010-04-23 16:48:57

试试这个:

代码语言:javascript
复制
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 OR pr7.field is null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2700354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档