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

如何用SQL查询满足前缀匹配条件的System 2不匹配记录?

问题解答

能否用JOIN实现需求?

可以,使用LEFT JOIN配合NULL判断就能实现你的需求,同时你尝试的NOT EXISTS写法也能达成目标(不过你的原SQL存在语法问题)。

正确的JOIN实现语句

核心逻辑是将System2的a字段与System1的a字段前6位做关联,筛选出关联失败的System2记录:

SELECT s2.*
FROM System2 s2
LEFT JOIN System1 s1 ON s2.a = SUBSTRING(s1.a, 1, 6)
WHERE s1.a IS NULL;

逻辑说明

  • LEFT JOIN会保留System2的所有记录,若System2的a能匹配到System1中a的前6位,对应行的System1字段会有值;未匹配到的行,System1的所有字段会为NULL
  • 通过WHERE s1.a IS NULL筛选,就能得到System2中所有不匹配的记录

你原SQL的问题修正

你提供的SQL存在语法错误,正确的NOT EXISTS写法应该是:

SELECT s2.*
FROM System2 s2
WHERE NOT EXISTS (
    SELECT 1
    FROM System1 s1
    WHERE s2.a = SUBSTRING(s1.a, 1, 6)
);

这个写法和LEFT JOIN的实现效果等价(在表中无重复匹配记录的场景下)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:39:57