所以我有这张桌子
Product_ID Client_ID
1 2
1 3
2 2
3 2
基本上我需要选择product_ID
独有的client_id = 2
。在我的情况下,它应该只返回2和3 product_ID
,因为id = 1
不是独占的并且有多个客户端设置。
答案 0 :(得分:1)
这是怎么做的。
首先,让我们创建你的表。
create table SomeTable
(
Product_ID int,
Client_ID int
)
Go
insert into SomeTable values(1, 2)
insert into SomeTable values(1, 3)
insert into SomeTable values(2, 2)
insert into SomeTable values(3, 2)
以下脚本将返回只有一个 Product_ID
值的所有Client_ID
值的列表:
SELECT Product_ID
FROM SomeTable
GROUP BY Product_ID
HAVING COUNT(*) = 1
然后你将它作为一个子条款来获得你正在寻找的结果:
SELECT st.Product_ID
FROM SomeTable st,
(
SELECT Product_ID
FROM SomeTable
GROUP BY Product_ID
HAVING COUNT(*) = 1
) tmp (Product_ID)
WHERE tmp.Product_ID = st.Product_ID
and st.Client_ID = 2
这将为您提供您正在寻找的行结果(2和3)。
答案 1 :(得分:0)
试试这个:
Select product_id from ClientsProducts where client_id in (
Select client_ID from
(select client_ID,count(product_id) from ClientsProducts
group by client_ID
having count(product_id)=1) a )
答案 2 :(得分:0)
使用COUNT
和HAVING
SELECT Product_ID
FROM ClientsProducts
GROUP BY Product_ID
HAVING COUNT(Product_ID) = 1
输出
Product_ID
2
3