1

最大 seq_no レコードを持つ各質問を取得しようとしていますが、間違ったデータが返されています。

クエリは次のとおりです。

SELECT id, attempt, seq_number, question
FROM question_states
WHERE attempt = 374
AND seq_number IN ( SELECT MAX(seq_number) FROM question_states WHERE attempt = 374 GROUP BY question)
GROUP BY question, id

質問としてテーブル名が1つあります。構造は以下のとおりです。

id--seq_number--attempt--question
1 --0     --374  -- 130
2 --0     --374  -- 130
3 --1     --374  -- 130
4 --2     --374  -- 130
5 --1     --374  -- 131

このクエリが質問に対して 2 つのレコードを返すのはなぜ130ですか? を削除すると、GROUP BY id間違ったデータが返されます。

4

2 に答える 2

0

サブクエリでは、group by を使用したため、'2' と '1' の 2 つの値が返されます。「IN」ステートメントを使用したため、メインクエリでは、フィールド seq_number と試行 = 374 のすべてのデータが返されます

試す

question_states から max(seq_number)、id、試行、質問を選択する seq_number でグループ化する seq_number で並べ替える DESC 制限 1

于 2013-12-13T12:31:30.923 に答える