有没有一种方法可以在一张表上使用SQL
语句,结果是没有特定属性的客户端?
该表存在多个列。其中一个是Client
,另一个是Product
。一个client
可以具有多个具有不同product
值的不同记录。
每个client
至少应具有一个特定的product
(例如X
),然后可以拥有许多其他不同的product
值。我想使用一条语句返回所有没有clients
的{{1}}。
答案 0 :(得分:1)
有几种方法:
使用NOT EXISTS
如下:
SELECT client
FROM yourTable T
WHERE NOT EXISTS
(SELECT 1 FROM yourTable TIN
WHERE TIN.product = 'product X'
AND T.CLIENT = TIN.CLIENT
);
使用NOT IN
SELECT client
FROM yourTable T
WHERE client not in
(SELECT tin.client FROM yourTable TIN
WHERE TIN.product = 'product X'
);
使用group by
,如其他答案所示
select client
from yourTable
group by client
HAVING COUNT(CASE WHEN product = 'product X' THEN 1 END) = 0;
答案 1 :(得分:0)
聚合是一种简单的选择:
SELECT client
FROM yourTable
GROUP BY client
HAVING COUNT(CASE WHEN product = 'product X' THEN 1 END) = 0;
这是通过为每个客户保留与产品X匹配的每个记录的计数来实现的。假设客户从未拥有此产品,则计数将为零。
答案 2 :(得分:0)
使用NOT IN尝试一下。
SELECT *
FROM table1
WHERE product NOT IN ('X')
答案 3 :(得分:0)
SELECT [Clients] FROM [tablename] WHERE Product != 'X'
答案 4 :(得分:0)
使用子查询获取所有具有 X的记录,然后在主查询中获取此子集中 not 的所有记录:
SELECT DISTINCT table_name.client FROM table_name WHERE table_name.client NOT IN (SELECT DISTINCT table_name.client FROM table_name WHERE table_name.product = 'X')