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