MYSQL - 检查所有组成员是否具有相同的类型

时间:2013-05-28 09:13:26

标签: mysql sql

我有下表:

SomeID GroupID TYPE
1       1        1
2       1        2
3       1        2
4       2        1
5       2        1
6       3        2

我想要找到的是,是否GROUP所有成员都具有相同的类型。我也想知道小组的类型是什么。

例如

  

组1有2种类型(1和2),组2有1种类型(1)和
  第3组有1种类型(2)

我如何在 MySQL 中实现它?

3 个答案:

答案 0 :(得分:4)

SELECT  GroupID, 
        COUNT(DISTINCT type) totalType,
        GROUP_CONCAT(DISTINCT TYPE ORDER BY TYPE) TypeList
FROM    TableName
GROUP   BY GroupID

输出

╔═════════╦═══════════╦══════════╗
║ GROUPID ║ TOTALTYPE ║ TYPELIST ║
╠═════════╬═══════════╬══════════╣
║       1 ║         2 ║ 1,2      ║
║       2 ║         1 ║ 1        ║
║       3 ║         1 ║ 2        ║
╚═════════╩═══════════╩══════════╝

答案 1 :(得分:1)

尝试

SELECT `GroupID` ,`type` FROM `table` group by `GroupId` HAVING count(Distinct `type`) = 1

请参阅sql fiddle

输出

╔═════════╦══════╗
║ GroupId ║ Type ║
╠═════════╬══════╣
║       2 ║    1 ║
║       3 ║    2 ║
╚═════════╩══════╝

答案 2 :(得分:0)

您可以使用以下代码,包括子句:

select GroupID, if(sumTypes = 1, 'true', 'false') as AllTypesSame from (
SELECT  GroupID, COUNT(DISTINCT type) sumTypes
FROM    testtable
GROUP   BY GroupID) as subtable

我已成功测试了以下结果:

GroupID   AllTypesSame
1         false
2         true
3         true