我有一个类似于此的简单表。有些制造商生产不同类型的汽车;每辆车都有型号(唯一钥匙)
maker type model
A VAN 111
A VAN 112
A SEDAN 113
A SUV 114
A SUV 115
B VAN 116
B SUV 117
C SEDAN 118
C SEDAN 119
C SEDAN 120
D VAN 121
E VAN 122
E VAN 123
E SEDAN 124
E SUV 125
如何选择只生产一种汽车和多种型号的制造商?我真的绞尽脑汁想要做一个这样做的方法。我认为GROUP BY和HAVING子句与COUNT()函数相关,但是如果尝试:
SELECT maker, type
FROM table
GROUP BY maker, type
HAVING COUNT(type) = 1
它返回A-SEDAN
和B-VAN
等内容(因为它们只有一个模型),这不是我需要的。我需要在'type'列中获得一个具有相同值的行,同时拥有多个模型。
答案 0 :(得分:1)
如何选择只生产一种汽车和多种型号的制造商?
您可以使用:
SELECT maker, MAX(type) AS type
FROM tab
GROUP BY maker
HAVING COUNT(DISTINCT TYPE) = 1
AND COUNT(DISTINCT MODEL) > 1;
的 LiveDemo
强>
输出:
╔═══════╦═══════╗
║ maker ║ type ║
╠═══════╬═══════╣
║ C ║ SEDAN ║
╚═══════╩═══════╝