Mysql 查找没有值B的值A的计数

Mysql 查找没有值B的值A的计数,mysql,sql,Mysql,Sql,如何查找A列中没有特定值的B列中的值 列A(比如名称)不是唯一的,A中有多行具有相同的值(因为同一个人可以有多辆车) B栏,比如说汽车品牌,显示了一个人在A中拥有的汽车品牌。总共只有5个可能的品牌,理想情况下每个人都应该拥有其中一个品牌——福特 我如何找出那些拥有其他车型但却错过了福特的人的所有独特名字?在上面的示例中,我希望找到Susan。您可以使用聚合: ROW - NAME - BRAND ____________________ 1 - John - Ford 2 - Joh

如何查找A列中没有特定值的B列中的值

列A(比如名称)不是唯一的,A中有多行具有相同的值(因为同一个人可以有多辆车)

B栏,比如说汽车品牌,显示了一个人在A中拥有的汽车品牌。总共只有5个可能的品牌,理想情况下每个人都应该拥有其中一个品牌——福特


我如何找出那些拥有其他车型但却错过了福特的人的所有独特名字?在上面的示例中,我希望找到Susan。

您可以使用聚合:

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

having
子句统计与
Ford
匹配的行数。
=0
表示没有这样的行。

我希望您正在谈论这一点

select name
from t
group by name
having sum(brand = 'Ford') = 0;
选择不同的名称
从表名
“福特”品牌在哪里;

如果您需要所有其他4辆车的名称,但没有福特:

SELECT DISTINCT name
FROM tablename
WHERE brand <> 'FORD';

有很多方法,但有一个答案是:

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

显然不是:“在上面的例子中,我正在寻找Susan。”那么“除了一个以外的所有人”是什么意思呢?更新了,感谢您的贡献,这里有两个选项有效。投赞成票!
SELECT DISTINCT A
FROM T
WHERE A NOT IN (
    SELECT A
    FROM T
    WHERE B = 'Ford'
);