2

私のテーブルは:

╔════╦════════╦════════════╦════════════╦════════╗
║ ID ║ TESTID ║ SESSIONID  ║ TOTALSCORE ║ USERID ║
╠════╬════════╬════════════╬════════════╬════════╣
║  1 ║     10 ║ 55cff3fbfs ║        250 ║    972 ║
║  2 ║     10 ║ 55cff3fbfs ║        440 ║    972 ║
║  3 ║     11 ║ 66fdf3fbfs ║        500 ║    972 ║
║  4 ║     11 ║ 66fdf3fbfs ║        700 ║    972 ║
║  5 ║     12 ║ 77ksfjskfs ║        800 ║    972 ║
║  6 ║     12 ║ 77ksfjskfs ║        700 ║    972 ║
║  7 ║     13 ║ 8fsfskffsf ║        900 ║    972 ║
║  8 ║     13 ║ 8fsfskffsf ║        750 ║    972 ║
╚════╩════════╩════════════╩════════════╩════════╝

ユーザーIDを指定してmaxscoreの完全な行を取得する必要があります

結果は次のようになります。

id  TestId sessionId     TotalScore   UserId
---|-----|------------|------------|---------
2  | 10  | 55cff3fbfs |     440    | 972
4  | 11  | 66fdf3fbfs |     700    | 972
5  | 12  | 77ksfjskfs |     800    | 972
7  | 13  | 8fsfskffsf |     900    | 972

だから私を助けてください.......MYSQLでクエリ/ストアドプロシージャを書く方法

4

1 に答える 1

4

サブクエリを持つという考え方は、totalScoreそれぞれに対して最大になるということTestIDです。次の条件で一致し、サブクエリのTestID最大値が元のテーブルの値と一致する場合、その結果はテーブル自体に結合されます。TotalScore

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT TestID, MAX(TotalScore) maxScore
            FROM tableName
            GROUP BY TestID
        ) b ON  a.TestID = b.TestID AND
                a.TotalScore = b.maxScore

出力

╔════╦════════╦════════════╦════════════╦════════╗
║ ID ║ TESTID ║ SESSIONID  ║ TOTALSCORE ║ USERID ║
╠════╬════════╬════════════╬════════════╬════════╣
║  2 ║     10 ║ 55cff3fbfs ║        440 ║    972 ║
║  4 ║     11 ║ 66fdf3fbfs ║        700 ║    972 ║
║  5 ║     12 ║ 77ksfjskfs ║        800 ║    972 ║
║  7 ║     13 ║ 8fsfskffsf ║        900 ║    972 ║
╚════╩════════╩════════════╩════════════╩════════╝
于 2012-12-08T07:34:16.937 に答える