sql 查询去除重复行

sql 查询去除重复行,第1张

首先,从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语句如何查询记录中重复最多的记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/web/9786761.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存