sql查询语句计算重复数据个数

sql查询语句计算重复数据个数,第1张

sql
计算重复数据个数
可以使用
count
来统计
例子
personal表
id
name
1
xm
2
xm
3
mx
统计personal表中name为xm的个数
select
count(name)
total
from
personal
where
name='xm'
结果
total
2

select
from log as a ,(select message from log group by message having count()>1) b
where amessage =bmessage
这么写会比你的写法效率高一些,不过暂时想不出可以大幅度改善性能的写法。
我的语句是联接,而楼主的查询是嵌套子查询。
SQL SERVER帮助中说的很明白:在一些必须检查存在性的情况中,使用联接会产生更好的性能。否则,为确保消除重复值,必须为外部查询的每个结果都处理嵌套查询。所以在这些情况下,联接方式会产生更好的效果。

方法如下:
select

from
你的表名
a
where
id=(select
min(id)
from
你的表名
whereitem_id=aitem_id)
在查询之前先把数据库表中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。
这样让所有的行都比较不就得到不重复的数据了。

SELECT 某一列, COUNT( 某一列 ) FROM 表 GROUP BY 某一列 HAVING COUNT( 某一列 ) 〉1 这样查询出来的结果, 就是 有重复, 而且 重复的数量。

1、最直观的思路:要知道所有名字有重复人资料,首先必须知道哪个名字重复了:
select
name
from
emp
group
by
name
having
count()>1
所有名字重复人的记录是:
select

from
emp
where
name
in
(select
name
from
emp
group
by
name
having
count()>1)
2、稍微再聪明一点,就会想到,如果对每个名字都和原表进行比较,大于2个人名字与这条记录相同的就是合格的
,就有:
select

from
emp
where
(select
count()
from
emp
e
where
ename=empname)
>1

可以利用分组和count函数来进行统计,大致思想如下:
select 列名, count(列名) from 表名
group by 列名
having count(列名)>1这样统计出来的是有重复的行的重复数量。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10425293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存