34,576
社区成员
发帖
与我相关
我的任务
分享
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
CREATE TABLE t(
n NVARCHAR(20)
)
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('3')
;WITH cte AS (
SELECT ROW_NUMBER() OVER (PARTITION BY n ORDER BY (select 1)) AS rid,* FROM t
)
DELETE FROM cte
WHERE rid!=1
SELECT * FROM t
/*
n
--------------------
1
2
3
*/
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
CREATE TABLE t(
id INT IDENTITY(1,1) PRIMARY KEY,
n NVARCHAR(20)
)
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('3')
;WITH cte AS (
SELECT ROW_NUMBER() OVER (PARTITION BY n ORDER BY id ASC) AS rid,* FROM t
)
DELETE FROM cte
WHERE rid!=1
SELECT * FROM t
/*
id n
----------- --------------------
1 1
3 2
5 3
*/
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([a] int,[b] int,[c] int)
Insert #T
select 1,1,1 union all
select 2,2,2 union all
select 1,1,1 union all
select 3,3,1 union all
select 1,1,2
Go
--测试数据结束
DELETE a
FROM #T a
JOIN ( SELECT a ,
b ,
c
FROM #T
GROUP BY a ,
b ,
c
HAVING COUNT(1) > 1
) t ON t.a = a.a
AND t.b = a.b
AND t.c = a.c
SELECT * FROM #T
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
CREATE TABLE t(
n NVARCHAR(20)
)
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('1')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('2')
INSERT INTO t (n) VALUES ('3')
DELETE T
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY n ORDER BY (select 1)) AS rid,* FROM t)T
WHERE rid>1
SELECT * FROM t