2016-04-06 4 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上の別の質問を読んで、COUNTが、私はむしろ、私は、このような「1,2」としてtheGROUP_CONCATの数を適用するユーザーIDにカウントしませ適用したいしています。

私が望むのは、このクエリが1回以上発生するレコードのみを表示するように変更することです。例えば、ちょうど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)countは2です。(1,2,3)countは3、(1,2,3,4)countは4です。私が望むのは(1,2) –

+0

これはサブクエリで解決できます。 –

関連する問題