Mysql Comapare值位于同一列同一表中

Mysql Comapare值位于同一列同一表中,mysql,sql,select,where-in,Mysql,Sql,Select,Where In,我的桌子是空的 产品(制造商、型号、类型) 我想选择类型和制造商只有相同的类型,也有数量的模型大于一 样本数据: maker model type ------------------------------------- A 123 computer B 234 laptop B 345 laptop C

我的桌子是空的

产品(制造商、型号、类型)

我想选择类型和制造商只有相同的类型,也有数量的模型大于一

样本数据:

maker             model         type
-------------------------------------
 A                 123        computer
 B                 234         laptop
 B                 345         laptop
 C                 456         printer
 C                 543           PC

上述样本数据的答案是B和笔记本电脑,因为制造商B只生产笔记本电脑,也生产多个型号。这不是制造商A,因为即使他生产同一型号的产品,他也只有一个型号。

这很简单。您正在寻找记录计数>1且不同类型计数=1的制造商:

select maker
from product
group by maker
having count(distinct type) = 1 and count(*) > 1;
试试这个:

SELECT maker 
FROM Product
GROUP BY maker, type
HAVING COUNT(1) > 1

如果我包含类型,则我需要生成器和类型。它显示“Product.type”列在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中。如果我在GROUP BY中添加类型,结果将变为错误。当您仅使用一种类型选择这些生成器时,您可以选择min(类型)或max(类型)-当然是相同的-显示类型。