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-SEDANB-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;

LiveDemo

输出:

╔═══════╦═══════╗
║ maker ║ type  ║
╠═══════╬═══════╣
║ C     ║ SEDAN ║
╚═══════╩═══════╝