如何用sql语句查询重复记录

表的名字是log,其中一个字段是message,我想用一条语句查询出来所有message有重复的记录。注:是所有有重复的记录都要列表出来,所以就不能用groupby,因为... 表的名字是log, 其中一个字段是message,我想用一条语句查询出来所有message有重复的记录。 注:是所有有重复的记录都要列表出来,所以就不能用group by,因为这样只会把每种重复的纪录取出一条来显示。 我原来的语句是这样写的: select * from log as a where (select count(*) from log as b where a.message = b.message)>1,但是当数据量达到2000的时候语句的效率就很差了,有谁能想出来更加高效的查询语句吗? 展开
 我来答
肇全官傲易
2020-01-22 · TA获得超过3724个赞
知道大有可为答主
回答量:3051
采纳率:31%
帮助的人:170万
展开全部
select
*
from
log
as
a
,(select
message
from
log
group
by
message
having
count(*)>1)
b
where
a.message
=b.message
这么写会比你的写法效率高一些,不过暂时想不出可以大幅度改善性能的写法。
我的语句是联接,而楼主的查询是嵌套子查询。
SQL
SERVER帮助中说的很明白:在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式