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

SQL使用INTERSECT结合子查询无输出的问题排查求助

解决INTERSECT查询无输出的问题

我一眼就看到你SQL里的两个关键问题,这就是导致没有输出的原因:

  • 判断普通字符串相等不能用IS,IS是专门用来判断NULL或者布尔值(比如IS TRUE)的,普通值匹配得用=
  • 子查询返回单个值时,同样要用=而不是IS来匹配

修正后的正确代码如下:

SELECT job_id FROM bookjobs WHERE job_id = 'N' 
INTERSECT 
SELECT job_id FROM po_items WHERE item_id = (SELECT item_id FROM items WHERE descr = '9KG PAPER');

具体解释下错误点:

  1. job_id IS 'N'的问题:数据库会把字符串'N'当作布尔值解析(多数数据库里非空字符串会被判定为TRUE),所以这行条件其实等价于job_id IS TRUE,完全不符合你想要筛选job_id为'N'的需求,直接导致第一个查询没有返回任何数据,INTERSECT自然也出不了结果。
  2. item_id IS (SELECT...)的问题:这里子查询返回的是单个item_id值,同样需要用=来做相等匹配,IS在这里不适用。

修正后,第一个查询会正确筛选出job_id为'N'的记录,第二个查询也能找到对应descr为'9KG PAPER'的item_id关联的job_id,两者的交集就能得到你预期的002结果了。

内容的提问来源于stack exchange,提问作者Floating Tiki Hut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:30:51