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

如何查询TableX中指定ID是否存在于TableY并生成存在标识列

解决你的SQL查询问题

你原来的查询用了内连接,只会返回在TableY里有匹配的行,还会因为TableY的重复数据产生多条重复结果,根本拿不到TableX的全部行。要实现需求——给TableX每行加标记,判断TB_GO_ID或TB_RET_ID是否在TableY的TB_ID里,推荐用下面两种方法:

方法一:用EXISTS子查询(推荐,效率更高)

SELECT
    r.TB1_ID,
    CASE
        WHEN EXISTS (
            SELECT 1
            FROM TableY y
            WHERE y.TB_ID = r.TB_GO_ID OR y.TB_ID = r.TB_RET_ID
        ) THEN 'yes'
        ELSE 'FALSE'
    END AS Isexist
FROM TableX r;
  • EXISTS会检查当前TableX行的两个ID是否在TableY里存在,找到匹配就立刻停止,不用扫完整个表。
  • CASE根据检查结果输出对应的标记,保证每行只出一条结果。

方法二:用LEFT JOIN + DISTINCT

如果不习惯子查询,也可以用左连接配合去重:

SELECT DISTINCT
    r.TB1_ID,
    CASE
        WHEN y.TB_ID IS NOT NULL THEN 'yes'
        ELSE 'FALSE'
    END AS Isexist
FROM TableX r
LEFT JOIN TableY y ON y.TB_ID = r.TB_GO_ID OR y.TB_ID = r.TB_RET_ID;
  • 左连接会保留TableX的所有行,匹配不到TableY的时候TB_ID会是NULL。
  • DISTINCT用来去掉因为TableY重复数据产生的重复行。

最终输出

不管用哪种方法,都会得到你要的结果:

TB1_ID  Isexist 
1       yes 
2       yes 
3       FALSE   

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:13