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

如何使用SQL提取缺失的问题记录

查找用户未关联的问题ID

数据表结构

表1(问题表)

id | question_descr
===================
1  | blabla
2  | lorem
3  | ipsum
4  | dante
5  | alighieri

表2(用户-问题关联表)

id | user_name | question_id
============================
1  | test_user | 2
2  | test_user | 4
3  | test_user | 5

需求

查询出test_user未关联的问题ID,预期结果如下:

user_name | question_id
============================
test_user | 1
test_user | 3

解决方案

方法1:LEFT JOIN + IS NULL

通过左连接关联两张表,筛选出关联表中无匹配记录的问题ID:

SELECT 'test_user' AS user_name, t1.id AS question_id
FROM 表1 t1
LEFT JOIN 表2 t2 
  ON t1.id = t2.question_id 
  AND t2.user_name = 'test_user'
WHERE t2.question_id IS NULL;

方法2:NOT EXISTS

利用NOT EXISTS子查询判断当前问题ID是否未被用户关联,性能表现较好:

SELECT 'test_user' AS user_name, t1.id AS question_id
FROM 表1 t1
WHERE NOT EXISTS (
    SELECT 1
    FROM 表2 t2
    WHERE t2.question_id = t1.id 
      AND t2.user_name = 'test_user'
);

方法3:NOT IN

通过子查询获取用户已关联的问题ID,再用NOT IN排除这些ID:

注意:如果子查询返回的question_id包含NULL值,NOT IN会导致结果为空,使用时需确保子查询结果无NULL。

SELECT 'test_user' AS user_name, t1.id AS question_id
FROM 表1 t1
WHERE t1.id NOT IN (
    SELECT question_id
    FROM 表2
    WHERE user_name = 'test_user'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:11:09