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

使用IN语句实现多表查询并返回全部结果的技术需求

用IN语句实现查询并返回全部项目内容

嘿,我来帮你搞定这个需求!先理清楚你的表关联逻辑:

  • projects表的id对应stages表的pr_id,用来关联项目和它的阶段
  • stages表的t_id对应stad_ids表的id,关联阶段的标准分类

你的需求是用IN语句做查询,同时不管查询匹配结果如何都要返回全部内容——我猜你是想保留所有项目的记录,哪怕某个项目没有符合筛选条件的阶段,也不能把项目本身过滤掉对吧?下面给你具体的方案:

先回顾下你的表结构和数据

把你的表数据整理成SQL代码块,方便对照:

projects表

id | title
28 | pr28
31 | pr31
65 | pr65
74 | pr74

stages表

pr_id | id | t_id| title | comments
28 | 65 | 1 | st1 | bla
28 | 86 | 3 | st3 | blaaaa
31 | 132 | 1 | st1 | blabla
65 | 189 | 1 | st1 | bli
65 | 190 | 2 | st2 | blibli
65 | 224 | 3 | st3 | bliblib
74 | 319 | 3 | st3 | blibli
74 | 333 | 5 | st5 | blibli

stad_ids表

id | title
1 | st1
2 | st2
3 | st3
4 | st4
5 | st5

具体的SQL查询语句

这里分两种常见场景给你写:

场景1:筛选特定标准阶段(用IN指定t_id),同时保留所有项目

比如你想只看属于st1和st3(对应t_id=1和3)的阶段,但所有项目都要显示,哪怕某个项目没有这两个阶段:

SELECT 
    p.id AS project_id,
    p.title AS project_title,
    s.id AS stage_id,
    s.title AS stage_title,
    s.comments,
    si.title AS standard_stage_title
FROM projects p
LEFT JOIN stages s 
    ON p.id = s.pr_id 
    AND s.t_id IN (1, 3) -- 用IN筛选你要的标准阶段ID
LEFT JOIN stad_ids si 
    ON s.t_id = si.id
ORDER BY p.id, s.t_id;

这个语句里,IN放在LEFT JOIN的连接条件里,这样不会过滤掉没有匹配阶段的项目,只会把符合条件的阶段关联进来,不符合的阶段就不会显示,项目本身始终保留。

场景2:筛选阶段标题在指定列表,同时保留所有项目

如果你是想根据阶段标题筛选,比如只看st1、st3的阶段,同时保留所有项目:

SELECT 
    p.id AS project_id,
    p.title AS project_title,
    s.id AS stage_id,
    s.title AS stage_title,
    s.comments,
    si.title AS standard_stage_title
FROM projects p
LEFT JOIN stages s 
    ON p.id = s.pr_id
LEFT JOIN stad_ids si 
    ON s.t_id = si.id
WHERE s.title IN ('st1', 'st3') OR s.title IS NULL -- 保留没有阶段的项目
ORDER BY p.id, s.t_id;

这里把IN放在WHERE里,同时加了OR s.title IS NULL,确保那些没有任何阶段的项目也能被返回(不过你的数据里每个项目都有阶段,这个逻辑是为了兼容更通用的情况)。

关键点说明

  • 用LEFT JOIN是核心,它能保证左边的projects表的所有记录都被返回,哪怕右边的stages没有匹配项
  • IN语句用来指定你的筛选范围,你可以根据实际需求替换里面的值,比如换成(2,5)或者('st2','st5')
  • 如果你的“返回全部内容”是指要返回所有表的所有记录(不管关联关系),那可以用交叉连接,但这通常不是实际业务需要的,所以上面的左连接方案更贴合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:03:16