ROW - NAME - BRAND
____________________
1 - John - Ford
2 - John - BMW
3 - John - Merc
4 - Mary - Ford
5 - Mary - VW
6 - James - Ford
7 - James - Jeep
8 - James - Lexus
9 - Susan - Jeep
10 - Susan - Lexus
如何在A列中找到B列中没有特定值的值。
A栏,比如说Name,不是唯一的,A中有多个具有相同值的行(因为同一个人可以有多辆车)
B栏,比如Car Brand,显示了这个人在A中拥有的汽车品牌。总共只有5个品牌可能,理想情况下每个人都应该拥有一个品牌 - 福特。如何找到拥有其他车型但缺少福特的人的所有独特名称?在上面的例子中,我希望找到苏珊。
答案 0 :(得分:2)
您可以使用聚合:
select name
from t
group by name
having sum(brand = 'Ford') = 0;
having
子句计算与Ford
匹配的行数。 = 0
表示没有这样的行。
答案 1 :(得分:2)
我希望你在谈论这个。
SELECT DISTINCT name
FROM tablename
WHERE brand <> 'FORD';
答案 2 :(得分:1)
如果你需要所有其他4辆车的名字,但没有福特:
SELECT DISTINCT name FROM t
WHERE (SELECT COUNT(DISTINCT car) FROM t AS t2 WHERE t2.name=t.name)=4
AND (SELECT COUNT(*) FROM t AS t2 WHERE t2.name=t.name AND t2.car="Ford")=0
答案 3 :(得分:0)
有很多方法,但有一个答案是:
SELECT DISTINCT A
FROM T
WHERE A NOT IN (
SELECT A
FROM T
WHERE B = 'Ford'
);