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

如何查询不在课程注册列表中的所有MemberID?

找出未注册任何课程的会员ID

嘿,我来帮你搞定这个需求!要从tbl_member表中找出所有从未出现在课程注册记录(tbl_classregistration)里的MemberID,其实不用你提供的那个复杂关联查询,咱们聚焦核心逻辑就行,下面给你几种实用的写法:

方法1:使用NOT IN

这是最直观的写法,先捞取所有注册过课程的会员ID,再筛选出不在这个列表里的会员:

SELECT MemberID
FROM tbl_member
WHERE MemberID NOT IN (
    -- 子查询获取所有有过注册记录的会员ID(去重避免重复判断)
    SELECT DISTINCT MemberID
    FROM tbl_classregistration
)

方法2:使用NOT EXISTS

这种写法在性能上通常更优(尤其是当tbl_classregistration.MemberID有索引时),它会逐行验证会员是否存在注册记录:

SELECT m.MemberID
FROM tbl_member m
WHERE NOT EXISTS (
    -- 只要找到一条匹配的注册记录,就排除该会员
    SELECT 1
    FROM tbl_classregistration cr
    WHERE cr.MemberID = m.MemberID
)

方法3:使用LEFT JOIN + IS NULL

通过左连接保留所有会员,再过滤出没有对应注册记录的条目:

SELECT m.MemberID
FROM tbl_member m
LEFT JOIN tbl_classregistration cr 
    ON m.MemberID = cr.MemberID
-- 左连接后,未注册的会员对应的cr.MemberID会是NULL
WHERE cr.MemberID IS NULL

小提示

你之前的查询里关联了tbl_classes,但其实咱们只需要注册记录中的MemberID,完全不需要课程表的信息,所以上面的写法都去掉了多余的关联,更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:48:08