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

如何通过链式JOIN关联多表,查询未完成指定操作的人员?

SQLite多表链式JOIN查询未完成指定操作的人员姓名

首先明确你提到的三个表(包含你手动建立的关联表,假设命名为person_b_assoc,可替换为实际表名)的核心关联字段:

  • people:person_id(主键)、name
  • person_b_assoc:person_id(关联people.person_id)、b_user_id(关联results的B源用户字段)
  • results:b_user_id(B源用户标识)、action(指定操作字段)、done(完成标记,NULL表示未完成)

用链式LEFT OUTER JOIN即可保留所有people表记录,再关联中间表与results表,最后过滤出符合条件的人员。SQL语句如下:

SELECT DISTINCT p.name
FROM people p
LEFT JOIN person_b_assoc pb ON p.person_id = pb.person_id
LEFT JOIN results r ON pb.b_user_id = r.b_user_id AND r.action = '你要指定的操作'
WHERE r.done IS NULL OR pb.b_user_id IS NULL;

语句说明:

  1. 链式LEFT JOIN:先将people与关联表左连接,确保所有人员记录被保留;再将关联结果与results左连接,仅匹配指定的action操作。
  2. 过滤条件:
    • r.done IS NULL:匹配有对应操作记录但未完成(done为NULL)的人员
    • pb.b_user_id IS NULL:匹配无B源用户关联、自然无操作记录的人员
  3. DISTINCT:避免同一人员因多条未完成记录被重复输出

若你的关联表结构与假设不同,替换对应关联字段和表名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:17:07