Jas*_*per 6 sql sql-server-2008
我对要创建的视图有疑问.我有两个表在左外连接一起,说tableA和tableB,那里tableB是左外连接.
我想只选择表B中状态等于4的那些行,所以我添加WHERE state = 4到我的查询中.现在结果集被修剪了很多,因为没有匹配行的所有行都tableB从结果中删除(因为这些行的状态不是4).我也尝试过WHERE state = 4 OR state IS NULL,也不起作用(因为state技术上不是NULL没有状态时).
所以我需要的是一个WHERE只在实际存在行时进行评估的语句,是否存在这样的事情?
如果不是,我会看到两个选项:join (SELECT * FROM tableB WHERE state = 4)而不是表B,或创建具有相同WHERE语句的视图并将其加入.明智的选择是什么?
顺便说一句,这是SQL Server 2008 R2.
你把条件放在on条款中.例:
select a.this, b.that
from TableA a
left join TableB b on b.id = a.id and b.State = 4
Run Code Online (Sandbox Code Playgroud)
您可以添加state = 4到连接条件。
select *
from T1
left outer join T2
on T1.T1ID = T2.T1ID and
T2.state = 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7536 次 |
| 最近记录: |