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

如何实现查询所有记录,排除meeting_status.teacher_id不等于指定教师的条目?

如何编写排除特定教师关联会议的SQL查询?

首先得明确你的核心需求:你想要获取所有meeting表的记录,但要排除那些在meeting_status表里被非指定教师关联过的会议。这里分两种常见场景,我分别给你对应的写法:

场景1:保留「无状态记录」或「状态记录属于指定教师」的会议

如果你的需求是:只要会议没有对应的状态记录,或者状态记录里的教师是你指定的那个,就保留这条会议记录——那可以用LEFT JOIN配合WHERE条件实现:

-- 把28换成你实际要指定的teacher_id
SELECT m.*
FROM meeting m
LEFT JOIN meeting_status ms ON m.id = ms.meeting_id
WHERE ms.teacher_id IS NULL OR ms.teacher_id = 28;

逻辑解释:

  • LEFT JOIN会保留所有meeting表的记录,不管有没有对应的meeting_status数据
  • ms.teacher_id IS NULL:匹配那些还没有任何状态记录的会议
  • ms.teacher_id = 28:匹配状态记录属于指定教师的会议
  • 两个条件用OR连接,就自动排除了那些有状态记录但教师不是指定值的会议

场景2:排除所有「存在非指定教师关联状态」的会议

如果你的需求更严格:只要某条会议存在任意一条状态记录是其他教师的,就直接排除整个会议(哪怕它同时也有指定教师的状态记录)——那用NOT EXISTS子查询更合适:

-- 把28换成你实际要指定的teacher_id
SELECT m.*
FROM meeting m
WHERE NOT EXISTS (
    SELECT 1
    FROM meeting_status ms
    WHERE ms.meeting_id = m.id
    AND ms.teacher_id != 28
);

逻辑解释:

  • 子查询会检查当前会议是否存在非指定教师的状态记录
  • NOT EXISTS会过滤掉所有存在这种记录的会议,剩下的就是:要么没有任何状态记录,要么所有状态记录都属于指定教师的会议

你可以根据自己的实际业务需求选择对应的写法~

内容的提问来源于stack exchange,提问作者Captaîn Aamusane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:11:48