在ColA中搜索与ColB中特定的唯一val重复,以排除所有ColA

时间:2014-11-03 02:49:16

标签: sql-server sql-server-express

我提前道歉,我觉得我错过了一些非常愚蠢的事情。 (让我们忽略数据库结构,因为我有点陷入其中)。

我有,让我们使用客户订单 - 订单号可以运送到多个地方。为了方便起见,我只是说明三个,但它可能不止于此(家庭,办公室,礼品,礼品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。

由于

2 个答案:

答案 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)