2个同样功能的sql结果为什么会不一样

lilinew 2009-12-11 04:31:56
2个sql结果为什么会不一样
功能都是找出表rt里有重复3个字段的记录 (不包含id最小的行) ,
第1个select id from rt
where (typeId,Name,nId) in
(
select typeId,Name,nId
from rt
group by typeId,Name,Id
having count(*) > 1
)
and id not in (
select min(id) from rt
group by typeId,Name,nId
having count(*)>1
);
第2个
select id from rt t where exists ( select 1 from rt where typeId=t.typeId and Name=t.Name and nId=t.nId and id<t.id )

从逻辑上2着数据应该是一样的 (但是事实上2者数据是不一样的 )


...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lilinew 2009-12-14
  • 打赏
  • 举报
回复
复返测试好多此, 确认数据是一直的

是人为原因
OhMyDear 2009-12-11
  • 打赏
  • 举报
回复
nId, id 是一码事吗?有点乱呵。
shine333 2009-12-11
  • 打赏
  • 举报
回复
从逻辑上看,除非id不是主键
longlimin 2009-12-11
  • 打赏
  • 举报
回复
我刚测试过,在数量少的情况下结果是一样的。
lilinew 2009-12-11
  • 打赏
  • 举报
回复
略等 第1个sql等待时间过长 (rt300万,好像没有一次得到过结果(有人等10小时不能得到结果)
第2个很正常 不到30分钟就可以出来300万数据

这样 等会我自己建立测试数据(少量行)来测试
ACMAIN_CHM 2009-12-11
  • 打赏
  • 举报
回复
提供一条在1中,但不在2中的记录。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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