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

获取分组结果最新行的嵌套查询及跨表无匹配行查询问题咨询

解决跨表无对应记录的查询需求

针对你描述的场景——prov_index中每个provnum/pi_provnum唯一对应一行,而provider_info中一个provnum可以对应多行,需要找出一方存在但另一方无匹配的记录,我整理了几种实用的SQL写法,结合你的length()额外条件一起说明:

1. 找出provider_info中存在但prov_index中无对应provnum的记录

1.1 获取所有符合条件的行(包含provider_info中重复的provnum行)

如果需要保留provider_info中所有满足“provnum不在prov_index里”且符合length()条件的行,用NOT EXISTS子查询是比较高效的选择(尤其当prov_index的provnum字段有索引时):

SELECT *
FROM provider_info pi
WHERE NOT EXISTS (
    SELECT 1
    FROM prov_index idx
    WHERE idx.provnum = pi.provnum
)
AND LENGTH(pi.provnum) [你的具体条件,比如> 5]; -- 替换成实际的长度判断逻辑

也可以用LEFT JOIN配合IS NULL的写法,逻辑更直观:

SELECT pi.*
FROM provider_info pi
LEFT JOIN prov_index idx ON idx.provnum = pi.provnum
WHERE idx.provnum IS NULL
AND LENGTH(pi.provnum) [你的具体条件];

1.2 获取唯一的provnum列表(去重后)

如果只需要得到那些在provider_info中存在、但prov_index里没有的唯一provnum值,只需给查询加上DISTINCT即可:

SELECT DISTINCT pi.provnum
FROM provider_info pi
WHERE NOT EXISTS (
    SELECT 1
    FROM prov_index idx
    WHERE idx.provnum = pi.provnum
)
AND LENGTH(pi.provnum) [你的具体条件];

2. 反向需求:找出prov_index中存在但provider_info中无对应记录的行

如果之后需要反过来查询prov_index里有但provider_info中没有的记录,写法类似:

SELECT *
FROM prov_index idx
WHERE NOT EXISTS (
    SELECT 1
    FROM provider_info pi
    WHERE pi.provnum = idx.provnum
)
AND LENGTH(idx.provnum) [你的具体条件]; -- 如果需要对prov_index的provnum加长度条件

注意事项

  • 确保两张表中用于关联的provnum/pi_provnum字段类型一致,避免因类型不匹配导致的隐式转换,影响查询效率和结果准确性。
  • 如果表数据量较大,建议给prov_index.provnum和provider_info.provnum建立索引,能显著提升查询速度。

内容的提问来源于stack exchange,提问作者S.ov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:33:42