回答

收藏

删除具有重复值的行

技术问答 技术问答 375 人阅读 | 0 人回复 | 2023-09-14

我必须用重复行清理表格:2 o5 ^$ w  M/ J$ g4 Y, \
id: serial idgid: group idurl: string 一个gid可能有多个url值:) C2 I- K) T! x8 }- Q
id    gid   url----  ----  ------------11   12    12    www.gmail.com222    12           www.some.com3     12            www.some.com 我想查询并删除整个表格gid和url所有重复的行。在上面的例子中,删除后,我只想留下1、2、4和5。
5 g: B, H5 Z2 ?) x4 ]                                                               
+ X6 w; I$ M; @1 O! b! D    解决方案:                                                               
$ m! _$ g7 X+ N  ~! w: y: _: k7 O                                                                ;WITH x AS % M) J. R* v* K1 k% d$ K0 s
                (
, S: B4 y: E; V4 O$ U* g- `                            SELECT id,gid,url,rn = ROW_NUMBER() OVER
2 i  ^9 z9 u0 z/ {                                    (PARTITION BY gid,url ORDER BY id) - f' T: a0 g/ G
                            FROM dbo.table4 k8 `+ h+ o- j/ r" V: P3 g% O
                )  z# U9 \  G1 }9 b0 ?; ^7 d
                SELECT id,gid,url FROM x WHERE rn = 1 – the rows you’ll keep/ _) I& E& @) F0 i& [
                – SELECT id,gid,url FROM x WHERE rn > 1 – the rows you’ll delete" ]3 P: V. u5 @/ n
                – DELETE x WHERE rn > 1; – do the delete
( W4 m5 z  m/ q) n7 P- x对第一个选择满意(表示您将保留的行)后,删除并取消第二个选择的注释。在对此表示满意后,它指示要删除的行删除并取消注释。
' g) q' N" ^# S/ I/ ^8 m如果不想删除数据,只需要忽略SELECT…下注释行即可。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则