无法在GROUP_CONCATdistinct..中添加限制

问题描述

SELECT 
    quiz.id AS quizId,quiz.name AS quizName,GROUP_CONCAT(distinct(quiz_attempt.quiz_attempt_status)
        ORDER BY quiz_attempt.id DESC limit 1) AS quizAttemptStatus
FROM
    course
        LEFT JOIN
    quiz ON quiz.id = course.quiz
        LEFT JOIN
    quiz_attempt ON quiz_attempt.quiz = quiz.id
WHERE
    (course.id = 'courseId'
        AND quiz_attempt.user = 'userId' )
GROUP BY quiz.id,quiz_attempt.id

当我在GROUP_CONCAT(distinct(...))内添加限制时,它不起作用,我希望对课程中的每个测验进行最新尝试。怎么做?

解决方法

尝试使用行号,然后仅获取第一个行号?

ROW_NUMBER() OVER (
    [PARTITION BY partition_expression,... ]
    ORDER BY sort_expression [ASC | DESC],...
)

还可以在此处查看更多信息: https://www.sqlservertutorial.net/sql-server-window-functions/sql-server-row_number-function/