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

如何通过最优SQL查询获取带回答状态的全量问题列表?

如何编写最优SQL查询获取所有问题的回答状态?

现有表结构

question表

Id    |  name
-------------------
1         | question_1
2         | ...
3         | ...
4         | ...

response表

ID       |  name       |  question_id
------------------------------------
1         | response_1  |     1
2         | ...         |     2
3         | ...         |     4  
4         | ...         |     4

需求

获取所有question的列表,新增status列——存在对应回答时为true,无回答时为false,期望结果如下:

question_Id  |  status
-------------------
1            | true
2            | true
3            | false
4            | true

最优查询方案

方法1:使用EXISTS子查询(推荐)

EXISTS子查询会在找到匹配的回答记录后立即终止检索,无需统计所有匹配项,在数据量较大时性能更优:

SELECT 
    q.Id AS question_Id,
    EXISTS(SELECT 1 FROM response r WHERE r.question_id = q.Id) AS status
FROM question q;

方法2:LEFT JOIN结合条件判断

如果需要兼容部分特殊数据库,也可以用左连接的方式实现:

SELECT 
    q.Id AS question_Id,
    CASE WHEN r.question_id IS NOT NULL THEN true ELSE false END AS status
FROM question q
LEFT JOIN response r ON q.Id = r.question_id
GROUP BY q.Id;

或者通过统计匹配数量来判断:

SELECT 
    q.Id AS question_Id,
    COUNT(r.question_id) > 0 AS status
FROM question q
LEFT JOIN response r ON q.Id = r.question_id
GROUP BY q.Id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:20:33