我有一个表变量,它包含orderID
,UnitID
和OrderServiceId
(它已经通过带insert语句的查询填充)。我的表变量中不存在的SQL显示记录
我则有权根据本返回15列其中还包括OrderId
,UnitId
,OrderServiceId
我只需要从该查询哪里OrderId
,UnitId
和OrderServiceId
相同的组合是返回行的查询不在表变量中。
我有一个表变量,它包含orderID
,UnitID
和OrderServiceId
(它已经通过带insert语句的查询填充)。我的表变量中不存在的SQL显示记录
我则有权根据本返回15列其中还包括OrderId
,UnitId
,OrderServiceId
我只需要从该查询哪里OrderId
,UnitId
和OrderServiceId
相同的组合是返回行的查询不在表变量中。
您可以使用NOT EXISTS
。例如
FROM YourQuery q
WHERE NOT EXISTS
(
SELECT * FROM @TableVar t
WHERE t.OrderId = q.OrderId
and t.UnitId = q.UnitId
and t.OrderServiceId=q.OrderServiceId
)
select q.*
from (
MyQuery
) q
left outer join MyTableVariable t on q.ORDERID = t.ORDERID
and q.UNITID= t.UNITID
and q.ORDERSERVICESID = t.ORDERSERVICESID
where t.ORDERID is null
+1更快了! – 2010-09-14 17:01:15
可能会重复,因为它是JOIN。使用不存在 – gbn 2010-09-14 17:22:19
您可以使用EXCEPT | INTERSECT运营商为此(link)。
例子:
(select 3,4,1
union all
select 2,4,1)
intersect
(select 1,2,9
union all
select 3,4,1)
+1不存在,总是,恕我直言 – gbn 2010-09-14 17:22:46