非常诡异的NOT Exist查询错误问题

datahandler2 2020-06-03 03:57:52
两个一模一样的表结构(A表和B表)
B表是本地表,A表放置在192.168.1.108服务器上面。
通过在本地SQL Server添加 192.168.1.108 链接服务器对象
ICID 字段类型:varchar(20)
CompanyKey 字段类型: int

B表数据:
CompanyKey ICID CreateDate
5 0008007062 2018-10-11


[192.168.1.108].MyTestDB.dbo.A
CompanyKey ICID CreateDate
5 0008007062 2020-10-11

现需求:希望根据CompanyKey+ICID查询出 A表中哪些数据不存在B表

SELECT *
FROM [192.168.1.108].[MyTestDB].dbo. A
WHERE CompanyKey=5 AND NOT EXISTS
(
SELECT IC_ID
FROM B
WHERE A.CompanyKey=B.CompanyKeyAND A.ICID=B.ICID
)

上面查询明明A表和B表都存在 对应的记录,正确值应该是没有,但查询出来却是:
CompanyKey ICID CreateDate
5 0008007062 2020-10-11
...全文
518 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
三年丿 2020-06-09
  • 打赏
  • 举报
回复

SELECT *
FROM [192.168.1.108].[MyTestDB].dbo. A
WHERE CompanyKey=5  AND NOT EXISTS
(
    SELECT ICID
    FROM B
    WHERE CompanyKey='5' AND ICID='0008007062'
)
这样试试呢
三年丿 2020-06-09
  • 打赏
  • 举报
回复
没有复现的环境模拟,你这手写的SQL也乱七八糟的
datahandler2 2020-06-09
  • 打赏
  • 举报
回复
引用 16 楼 XXXXn帅气 的回复:
WHERE CompanyKey=5 是不是这的问题
我就只想比对CompanyKey=5的集合。。不这样写不然要怎么写?
datahandler2 2020-06-09
  • 打赏
  • 举报
回复
引用 15 楼 吉普赛的歌 的回复:
把排序规则贴出来看下 或强制用相同的排序规则来对比。 如果方便, 把这两个表导入到一个新库, 然后再查询是否还有这种现象。
两个数据库排序规则均是:Chinese_PRC_CI_AS 数据量太大。环境没办法导入到新库。
datahandler2 2020-06-09
  • 打赏
  • 举报
回复
引用 7 楼 三年丿 的回复:
根据你上面写的信息我建立了类似的环境,链接服务器+你查询的SQL,但是查询是无数据的,可能还有什么被忽略的东西
其实我的表字段不止这几个,是还有非常多个。。只是因为关联条件不涉及到那些字段。 我在想会不会是其他列有Null引起???如果是,实在无法理解。
吉普赛的歌 版主 2020-06-06
  • 打赏
  • 举报
回复
把排序规则贴出来看下 或强制用相同的排序规则来对比。 如果方便, 把这两个表导入到一个新库, 然后再查询是否还有这种现象。
datahandler2 2020-06-06
  • 打赏
  • 举报
回复
引用 9 楼 XXXXn帅气 的回复:
A,B两表关联一下看数据出的来吗

可以
datahandler2 2020-06-06
  • 打赏
  • 举报
回复
引用 12 楼 卖水果的net 的回复:
有可能是 NULL在作祟。

跟Null 没关系,都已经确定是那条数据了。
XXXXn帅气 2020-06-06
  • 打赏
  • 举报
回复
WHERE CompanyKey=5 是不是这的问题
卖水果的net 版主 2020-06-04
  • 打赏
  • 举报
回复
有可能是 NULL在作祟。
shoppo0505 2020-06-04
  • 打赏
  • 举报
回复
SELECT * FROM [192.168.1.108].[MyTestDB].dbo. A LEFT OUTER JOIN B ON A.CompanyKey =B.CompanyKey and A.ICID=B.ICID where B.CreateDate IS NULL
xiaoxiangqing 2020-06-04
  • 打赏
  • 举报
回复
你先改为exists可以出来数据吗
XXXXn帅气 2020-06-04
  • 打赏
  • 举报
回复
A,B两表关联一下看数据出的来吗
datahandler2 2020-06-04
  • 打赏
  • 举报
回复
引用 5 楼 RINK_1 的回复:
[quote=引用 2 楼 tiancaolin 的回复:] [quote=引用 1 楼 RINK_1 的回复:] 是不是ICID中有不可见的字符
我尝试Update一遍后,仍然是这样错误[/quote] 你直接各自运行以下的,看看是不是都能查询出来数据 SELECT * FROM 表 WHERE CompanyKey=5 AND ICID='0008007062'[/quote] 可以
三年丿 2020-06-03
  • 打赏
  • 举报
回复
根据你上面写的信息我建立了类似的环境,链接服务器+你查询的SQL,但是查询是无数据的,可能还有什么被忽略的东西
三年丿 2020-06-03
  • 打赏
  • 举报
回复
有建表及数据的SQL不
RINK_1 2020-06-03
  • 打赏
  • 举报
回复
引用 2 楼 tiancaolin 的回复:
[quote=引用 1 楼 RINK_1 的回复:] 是不是ICID中有不可见的字符
我尝试Update一遍后,仍然是这样错误[/quote] 你直接各自运行以下的,看看是不是都能查询出来数据 SELECT * FROM 表 WHERE CompanyKey=5 AND ICID='0008007062'
datahandler2 2020-06-03
  • 打赏
  • 举报
回复
引用 3 楼 zxm_heiye 的回复:
Select 后面怎么是IC_ID ?
帖子手写有误,不用在意这个。SQL语法可以正常执行
zxm_heiye 2020-06-03
  • 打赏
  • 举报
回复
Select 后面怎么是IC_ID ?
datahandler2 2020-06-03
  • 打赏
  • 举报
回复
引用 1 楼 RINK_1 的回复:
是不是ICID中有不可见的字符
我尝试Update一遍后,仍然是这样错误
加载更多回复(1)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧