我有,让我们使用客户订单 - 订单号可以运送到多个地方。为了方便起见,我只是说明三个,但它可能不止于此(家庭,办公室,礼品,礼品2,礼品3等)
所以我的表是:
客户订单:
OrderID MailingID
--------------------
1 1
1 2
1 3
2 1
3 1
3 3
4 1
4 2
4 3
我需要找到的是已经发送到MailingID 1而不是2的OrderID(基本上我需要找到的是上面的orderID 2和3)。
如果重要,我正在使用Sql Express 2012。
由于
答案 0 :(得分:0)
也许这可能会有所帮助:
create table #temp(
orderID int,
mailingID int
)
insert into #temp
select 1, 1 union all
select 1, 2 union all
select 1, 3 union all
select 2, 1 union all
select 3, 1 union all
select 3, 3 union all
select 4, 1 union all
select 4, 2 union all
select 4, 3
-- find orderIDs that have been shipeed to mailingID = 1
select
distinct orderID
from #temp
where mailingID = 1
except
-- find orderIDs that have been shipeed to mailingID = 2
select
orderID
from #temp
where mailingID = 2
drop table #temp
答案 1 :(得分:0)
使用Subquery
运算符的简单NOT IN
应该有效。
SELECT DISTINCT OrderID
FROM <tablename> a
WHERE orderid NOT IN (SELECT orderid
FROM <tablename> b
WHERE b.mailingID = 2)