
首先,从img表中取数据库,将new_id重复的过滤掉,代码为
select
min(id)
from
img
group
by
new_id
------以new_id字段分组,取最小的ID,这个ID总不会重复了吧
然后将这个查询结果以虚拟表形式,作为过滤条件,取你所要的结果,代码为
select
Tnew_id
AS
is,title,d_time,imgurl
from
news,Img
where
newsid
=
imgnew_id
and
imgid
in
(select
min(id)
AS
img_id,new_id
from
img
group
by
new_id)
例如数据库中有两个字段A,B,则用下面的语句查出是否有重复数据
select
A,B
from
table1
group
by
A,B
having
count()
>
1;
阳光上的桥
你这个不行的
一般ID不会重复所有
count()>1
还能查
如果重复的是多个的
比如名称
aaa重复3次
bbb重复2次
那么你的代码就会把aaa和bbb全部读出来
而不是
重复最多
的
我是这样想的,比如说重复的是名称name
则查询按名称分组的按统计排序的第一条(倒序,数字越大的排前面),这样求出的名称就是重复最多的名称。
select
top
1
name
from
a1
group
by
name
order
by
count()
desc
需要所有列的值都拿来纵向判断。一个简单的方法是:
select
count(
distinct
t列1
[,t列2,t列3……]
)
as
cnt
from
t
[where条件(指定哪几行数据进行判断)
]
如果结果值为1,则表示这几行数据重复了。
其实就是distinct用来去掉重复的记录,当所有列都distinct过滤之后,最终结果就只有一行数据了。
DELETE A FROM DATE A,
(
//筛选出各个重复数据的第一行
SELECT ABC,D FROM
(
SELECT A+B+C AS ABC,D,
ROW_NUMBER() OVER(PARTITION BY (A+B+C) ORDER BY D) AS ROW
FROM DATE
) AS ABCD WHERE ROW=1
)AS B
//如果DATE表的A+B+C列等于ABCD表的ABC列
//并且DATE表的D列不等于ABCD表的D列则删除
WHERE A+B+C=ABC AND AD!=BD
以上就是关于sql 查询去除重复行全部的内容,包括:sql 查询去除重复行、sql server如何知道表中是否有重复的记录行、SQL语句如何查询记录中重复最多的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)