我试图从一个表中选择所有类别,并将它们与第二个表中的自行车匹配。如果第二个表中没有自行车,那么所有的类别都应该返回。如果第二个表中有一个或多个自行车,则仍然应该返回所有类别,但与自行车数据匹配。
以下是我到目前为止所拥有的:
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以外的所有类别。
如何修复此查询?
发布于 2015-07-18 19:20:28
您希望on子句中的条件,而不是where子句中的条件:
select `st`.* , `sc`.*
from `sbb_categories` `sc` left join
`sbb_tiles` `st`
on `st`.`category` = `sc`.`id` and `st`.`bike` = '381' ;发布于 2015-07-18 19:11:20
由于您在左联接表中为st**.**bike = '381‘或筛选,它将只返回返回true的结果。因此,也可以添加**或*st.bike = ' 382‘**,或者删除**st.bike = '381’或**
https://stackoverflow.com/questions/31494528
复制相似问题