2016-05-31 10 views
3

上の試みを数える私は、MySQLのクエリを持っているクイズの試行のIDによってグループ結果:mysqlグループでと別々の列

SELECT * 
FROM quiz_log 
WHERE archived = 0 
GROUP BY quiz_attempt_id 
ORDER BY quiz_attempt_id ASC 

This produces the below result

私の質問は、私は今で試行をカウントアップはどうすればよいですapp_user_idapp_user_id = 150が3回出現するので、第1行目に1、第3行目に2、第19行目に3という別の列が必要です。

答えて

2

あなたは、相関クエリを使用することができます。

SELECT t.*, 
     (SELECT count(distinct s.quiz_attempt_id) FROM quiz_log s 
     WHERE s.app_user_id = t.app_user_id 
     AND s.timestamp <= t.timestamp) as Your_Cnt 
FROM quiz_log t 
WHERE .... 
+0

SELECTトンを*、(SELECT COUNT(*)quiz_logはSからWHERE s.app_user_id = t.app_user_id AND s.timestamp <= t.timestamp)などYour_Cnt FROM quiz_log t GROUP BY quiz_attempt_id私はちょうど試しましたが、Your_cnt列が1、次に11、そして21と表示されていますか? –

+1

内部クエリは外部クエリとしてフィルタ処理されないため、サブクエリ内に同じフィルタを含める必要があります。とにかく今すぐお試しください。 @PeteNaylor – sagi

関連する問題