1

我有下表:

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中实现它?

4

3 回答 3

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        ║
╚═════════╩═══════════╩══════════╝
于 2013-05-28T09:16:45.167 回答
2

尝试

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

sql 小提琴

输出

╔═════════╦══════╗
║ GroupId ║ Type ║
╠═════════╬══════╣
║       2 ║    1 ║
║       3 ║    2 ║
╚═════════╩══════╝
于 2013-05-28T09:16:52.613 回答
0

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

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
于 2013-05-28T09:36:08.023 回答