我最近将我的 MySQL 服务器升级到 5.7 版,但以下示例查询不起作用:
SELECT *
FROM (SELECT *
FROM exam_results
WHERE exam_body_id = 6674
AND exam_date >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK)
AND subject_ids LIKE '%4674%'
ORDER BY score DESC
) AS top_scores
GROUP BY user_id
ORDER BY percent_score DESC, time_advantage DESC
LIMIT 10
该查询应该从指定的表中选择与在某个时间间隔内完成特定考试的最高得分者匹配的考试结果。我在第一次编写查询时必须包含 GROUP BY 子句的原因是为了消除重复用户,即在同一时间段内有多个最高分的用户参加考试。在不消除重复用户 ID 的情况下,前 10 名高分者的查询可能会返回同一个人的考试结果。
我的问题是:如何重写此查询以消除与 MySQL 5.7 严格模式相关的错误,该模式在 GROUP BY 子句上强制执行,同时仍保留我想要的功能?