2016-04-06 51 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

這可以通過子查詢來解決。 –

相關問題