我有两张桌子:
请求:
RequestID | Msg
----------------
5 | abc
6 | def
7 | ghi
8 | jkl
Run Code Online (Sandbox Code Playgroud)
RequestStatus:
RequestStatusID | RequestID |StatusID
-------------------------------------
1 5 1
2 8 2
Run Code Online (Sandbox Code Playgroud)
RequestStatus我需要表中的所有记录,Request除非StatusID = 2.(requestID=8应该过滤掉)
我LEFT OUTER JOIN用来接收表中的记录,Request但当我添加Where子句时(Where StatusID = 1),它当然不起作用.
And*_*rew 17
将约束移动到on子句.
select *
from request r
left join requestStatus rs
on r.requestID = rs.requestID
--and status_id = 1
and status_id <> 2
Run Code Online (Sandbox Code Playgroud)
你发生的事情是首先执行外连接.来自外部联接的任何没有匹配项的行在所有列中都将为空.然后你的where子句被应用,但是因为1 <> null,它不会像你想要的那样工作.
编辑:根据Piyush的评论改变了条款.
| 归档时间: |
|
| 查看次数: |
23165 次 |
| 最近记录: |