You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将测验应用场景下的两个SQL查询合并为单个查询?

解决方案

你需要合并三类测验的去重结果,不需要用JOIN,直接用UNION运算符合并两个查询的结果即可,UNION会自动对合并后的结果去重,符合你的展示需求。

注意你原有的第二个查询缺少当前用户的过滤条件,会返回所有用户的游玩记录,补充过滤条件后完整SQL如下:

SELECT quizid, title
FROM (
    -- 查询1:用户自己创作的测验 + 管理员发布的测验
    SELECT quiz.quizid, quiz.title
    FROM quiz 
    WHERE id = $1 
    OR id = 'admin'
    UNION
    -- 查询2:当前指定用户游玩过的去重测验
    SELECT DISTINCT quiz.quizid, quiz.title 
    FROM quiz 
    INNER JOIN played ON quiz.quizid = played.quizid
    WHERE played.user_id = $1
) AS all_quiz
-- 可自行调整排序规则,此处按quizid倒序
ORDER BY quizid DESC

补充说明

  • 如果你需要保留重复的测验记录,把UNION替换成UNION ALL即可,常规测验展示场景下用UNION即可
  • 如果后续需要给不同分类的测验加标识区分展示,可以在两个子查询里加自定义分类字段,比如第一部分加type '创建/官方',第二部分加type '玩过',再配合排序逻辑可以实现分类展示效果

内容的提问来源于stack exchange,提问作者Searcher99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:12:02