首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接两个表,以便从一个表返回所有数据,并与第二个表中的数据配对

如何连接两个表,以便从一个表返回所有数据,并与第二个表中的数据配对
EN

Stack Overflow用户
提问于 2015-07-18 18:59:23
回答 2查看 21关注 0票数 0

我试图从一个表中选择所有类别,并将它们与第二个表中的自行车匹配。如果第二个表中没有自行车,那么所有的类别都应该返回。如果第二个表中有一个或多个自行车,则仍然应该返回所有类别,但与自行车数据匹配。

以下是我到目前为止所拥有的:

代码语言:javascript
复制
select `st`.* , `sc`.* 
from `sbb_categories` `sc` 
left join `sbb_tiles` `st` on `st`.`category` = `sc`.`id` 
where `st`.`bike` = '381' or `st`.`id` is null;

这类工作,问题是,如果没有自行车在表2,它返回所有类别罚款。如果表2中有一辆自行车,它将正确地返回自行车的类别381,对于任何其他自行车大约有16个类别,例如,在表2中不存在的情况下,它将返回除自行车381以外的所有类别。

如何修复此查询?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-18 19:20:28

您希望on子句中的条件,而不是where子句中的条件:

代码语言:javascript
复制
select `st`.* , `sc`.* 
from `sbb_categories` `sc`  left join
     `sbb_tiles` `st`
     on `st`.`category` = `sc`.`id` and `st`.`bike` = '381' ;
票数 0
EN

Stack Overflow用户

发布于 2015-07-18 19:11:20

由于您在左联接表中为st**.**bike = '381‘或筛选,它将只返回返回true的结果。因此,也可以添加**或*st.bike = ' 382‘**,或者删除**st.bike = '381’或**

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31494528

复制
相关文章

相似问题

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