Mysql 无法在组中添加限制(不同(..)

Mysql 无法在组中添加限制(不同(..),mysql,sql-order-by,distinct,group-concat,sql-limit,Mysql,Sql Order By,Distinct,Group Concat,Sql Limit,当我在组_CONCAT(distinct(…)中添加限制时,它不起作用,我希望课程中的每个测验都有最新的尝试。如何操作?尝试使用行号,然后只抓取第一个行号 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 quiz

当我在组_CONCAT(distinct(…)中添加限制时,它不起作用,我希望课程中的每个测验都有最新的尝试。如何操作?

尝试使用行号,然后只抓取第一个行号

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语句中删除
GROUP_CONCAT(不同的(测验尝试.测验尝试状态)顺序按测验尝试.id DESC)作为quizAttemptStatus
我想要最新的尝试状态,因此,我需要添加限制,是否有其他方法获取最新的尝试详细信息?取消限制后,它会让所有测验都进行尝试,这不是我想要的。然后你需要尝试子查询,而不是group_concatit不起作用,对于每门课程,都有很多测验,每个测验都有很多尝试,我只想要每个测验的最新尝试如果你能列出测验和他们的尝试,那么你就可以通过使用行数和排序得到最后一个或第一个非常简单的答案
ROW_NUMBER() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)