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

Snowflake中校验表A与表B数据一致性的SQL查询需求

找出表A中未同步到表B的行

我有两张表:

  • 表A:包含Id和appleId列
  • 表B:包含Id和bappleId列

业务规则是:表A新增行时,表B需要同步创建对应appleId = bappleId的行。目前表A有4行数据,表B仅同步了2行,需要编写SQL找出表A中未同步到表B的行,期望获取这些行的appleId或表A的Id。

表A数据

IdappleId
333
434
535
636

表B数据

IdbappleId
133
234

原SQL问题

之前尝试的SQL是从表B查询不存在于表A的行,只能找出表B的多余数据,不符合需求:

select bappleId
from table b as b
where not exists  (select appleid from table a as a where a.appleId = b.bappleid)

正确SQL写法

方法1:使用NOT EXISTS

从表A出发,筛选出appleId在表B中没有对应bappleId的行:

SELECT a.Id, a.appleId
FROM tableA a
WHERE NOT EXISTS (
    SELECT 1
    FROM tableB b
    WHERE b.bappleId = a.appleId
);

方法2:使用LEFT JOIN + IS NULL

通过左连接表A和表B,筛选出表B中匹配项为空的行:

SELECT a.Id, a.appleId
FROM tableA a
LEFT JOIN tableB b ON a.appleId = b.bappleId
WHERE b.Id IS NULL;

两种写法都会返回表A中未同步的行(Id为5、6,appleId为35、36)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:52:07