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

MySQL查询求助:筛选无关联记录及满足条件的关联记录

解决方案

你只需要在原查询的条件中添加一个OR分支,用来匹配"存在对应assignments记录且assignments.active=0"的情况即可,修改后的SQL如下:

SELECT first_name, last_name 
FROM clients 
WHERE clients.status = 'Active' 
  AND (
    -- 第一类:无对应assignments记录
    NOT EXISTS(
        SELECT * 
        FROM assignments 
        WHERE assignments.client_id = clients.client_id
    )
    -- 第二类:有对应assignments记录且该记录active=0
    OR EXISTS(
        SELECT * 
        FROM assignments 
        WHERE assignments.client_id = clients.client_id
          AND assignments.active = 0
    )
);

逻辑说明

  • 外层WHERE clients.status = 'Active'确保只筛选状态为活跃的客户
  • 第一个子条件NOT EXISTS(...)保留原逻辑,获取没有任何关联任务记录的客户
  • 新增的OR EXISTS(...)子条件,用来筛选存在至少一条关联任务,且该任务状态为非活跃(active=0)的客户

如果同一个客户有多个任务记录(部分active=0、部分active=1),这个查询依然有效——EXISTS只要找到符合条件的一条记录就会返回真,不会因为其他不符合的记录排除该客户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:34