我有一个简单的连接查询,如下所示。
select *
from user u left join
user_roles ur
on ur.user_id = u.user_id
and ur.created_by = 'Mike'
where u.division = 'some division'
或者
select *
from user u left join
user_roles ur
on ur.user_id = u.user_id
where u.division = 'some division'
and ur.created_by = 'Mike'
关键是我已将附加过滤器子句条件从左连接移动到 where 子句。
如果我在多个列上连接两个表或将它放在 where 子句中,这有什么区别吗?
最佳答案
是的,这有很大的不同。
您基本上正在取消左连接并使其成为内部连接,隐藏不是由 Mike 创建的用户角色
Bell Mike
Toe Mike
Bob Jerry
第一个查询返回
Bell Mike
Toe Mike
Bob NULL
第二个查询返回
Bell Mike
Toe Mike
关于sql - 编写此查询的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12389417/