MySQL - 如何对文本内容进行分组?
MySQL - How to GROUP BY text content?
我有一个与此类似的简单 table。有制造不同类型汽车的制造商;每辆车都有一个型号(唯一键)
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
如何才能SELECT只生产一种车型和不止一种车型的厂商呢?我真的绞尽脑汁试图想出一种方法来做到这一点。我认为 GROUP BY 和 HAVING 子句与 COUNT() 函数相关,但如果 try:
SELECT maker, type
FROM table
GROUP BY maker, type
HAVING COUNT(type) = 1
它 returns 诸如 A-SEDAN
和 B-VAN
之类的东西(因为它们只有一个型号)这不是我需要的。我需要在具有多个模型的情况下在 'type' 列中获取具有相同值的行。
How can I SELECT manufacturers that produce only one type of car and more than one model?
您可以使用:
SELECT maker, MAX(type) AS type
FROM tab
GROUP BY maker
HAVING COUNT(DISTINCT TYPE) = 1
AND COUNT(DISTINCT MODEL) > 1;
输出:
╔═══════╦═══════╗
║ maker ║ type ║
╠═══════╬═══════╣
║ C ║ SEDAN ║
╚═══════╩═══════╝
我有一个与此类似的简单 table。有制造不同类型汽车的制造商;每辆车都有一个型号(唯一键)
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
如何才能SELECT只生产一种车型和不止一种车型的厂商呢?我真的绞尽脑汁试图想出一种方法来做到这一点。我认为 GROUP BY 和 HAVING 子句与 COUNT() 函数相关,但如果 try:
SELECT maker, type
FROM table
GROUP BY maker, type
HAVING COUNT(type) = 1
它 returns 诸如 A-SEDAN
和 B-VAN
之类的东西(因为它们只有一个型号)这不是我需要的。我需要在具有多个模型的情况下在 'type' 列中获取具有相同值的行。
How can I SELECT manufacturers that produce only one type of car and more than one model?
您可以使用:
SELECT maker, MAX(type) AS type
FROM tab
GROUP BY maker
HAVING COUNT(DISTINCT TYPE) = 1
AND COUNT(DISTINCT MODEL) > 1;
输出:
╔═══════╦═══════╗
║ maker ║ type ║
╠═══════╬═══════╣
║ C ║ SEDAN ║
╚═══════╩═══════╝