2016-04-06 22 views
0

我在我的查询中应用了Group_Concat,结果显示得很好。以下是我的查询,对Group_Concat的结果有信心

SELECT tblUserGroup.GroupID, GROUP_CONCAT(tblUserGroup.UserId) AS UserIds FROM  
tblGroup 
INNER JOIN tblUserGroup ON tblGroup.GroupID = tblUserGroup.GroupID 
GROUP BY tblUserGroup.GroupID 
ORDER BY (UserIds) 

现在输出是这样的。

GroupID  UserIds 
    1   1,2 
    2   1,4 
    3   1,2,3 
    4   1,2 
    5   1,2 
    6   1,2,3 

我已经阅读GROUP_CONCAT不同的问题和计数,但我想申请数量不是用户ID,而我想在theGROUP_CONCAT应用等数作为“1,2”。

我想要的是修改此查询,使其仅显示那些多次出现的记录。例如只是1,2和1,2,3

回答

1

您是否尝试过使用子查询?它会是这样的:

SELECT Sub.UserIds, COUNT(*) as Qt 
FROM (
    SELECT tblUserGroup.GroupID, GROUP_CONCAT(CONVERT(tblUserGroup.UserId, CHAR(20)) SEPARATOR ',') AS UserIds, count(*) FROM  
    tblGroup 
    INNER JOIN tblUserGroup ON tblGroup.GroupID = tblUserGroup.GroupID 
    GROUP BY tblUserGroup.GroupID HAVING COUNT(*) > 0 
) AS Sub 
GROUP BY Sub.UserIds 
+0

我无法确切地使用您的查询,但它非常接近我的要求。我修改了它,它工作。谢谢你指引我正确的方向。 –

0

也许你可以使用数量和使用下面的查询(我无法测试它):

SELECT tblUserGroup.GroupID, GROUP_CONCAT(tblUserGroup.UserId) AS UserIds, count(*) FROM  
tblGroup 
INNER JOIN tblUserGroup ON tblGroup.GroupID = tblUserGroup.GroupID 
GROUP BY tblUserGroup.GroupID HAVING COUNT(*) > 0 
ORDER BY (UserIds) 
+0

计数(*)这里给我的项目数。例如,对于(1,2)计数是2.对于(1,2,3)计数是3并且对于(1,2,3,4)计数是4.我想要的是(1,2) –

+0

这可以通过子查询来解决。 –

相关问题