回答

收藏

SQL:删除SQL Server中的重复记录

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

我有一个sql server数据库,我已经预加载了大量的数据行。
( v5 N. Z4 y( K不幸的是,数据库中没有主键,并且表中现在有重复的信息。我不担心没有主键,但是我担心数据库中存在重复项…" n" y# S/ o. Y: T* E, I% Q
有什么想法吗?(原谅我成为sql server newb)
! o; E& I1 D; a+ t8 d               
6 ~1 L. A/ e" }7 _' |解决方案:
. x& }. q5 d9 S9 S                ( z2 l) E, j. i6 v2 D/ T

  [2 I2 {- V* }; v
% s$ d7 A! L1 F6 Q                好吧,这就是为什么您应该在表上拥有主键的原因之一。什么版本的SQL Server?对于SQL Server 2005及更高版本:
; X! \2 D; d* o3 d/ j; w( a;WITH r AS
" }4 g) t, |7 A6 h(
: c: e: t# ^. L3 c* Q    SELECT col1, col2, col3, -- whatever columns make a "unique" row
) D8 m( t( P- I/ p1 N    rn = ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY col1)
0 r/ `5 v) c2 H4 {% Y" f    FROM dbo.SomeTable8 F% |4 p0 ?9 f4 l' J: I5 ~* q/ N% p
)
) m' x) @4 E! {DELETE r WHERE rn > 1;: o: w# ~4 ^* ?( j+ s5 }
然后,您不必在明天,第二天及之后的第二天再次执行此操作,只需在表上声明一个主键即可。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则