我在查询中应用了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和COUNT上阅读了不同的问题,但是我不想在UserId上应用计数,而是想在GROUP_CONCAT上应用计数,例如“ 1,2”。

我想要的是修改此查询,使其只显示发生一次以上的那些记录。例如只有1,2和1,2,3

最佳答案

您是否尝试过使用子查询?就像这样:

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

关于c# - 依靠Group_Concat的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36463092/

10-08 21:09