我有下表:
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 中实现它?
答案 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