34,576
社区成员
发帖
与我相关
我的任务
分享
USE tempdb
GO
IF OBJECT_ID('ta') IS NOT NULL
DROP TABLE ta
GO
CREATE TABLE ta(
id INT IDENTITY(1,1) PRIMARY KEY,
n VARCHAR(10)
)
GO
INSERT INTO ta(n) VALUES ('a')
INSERT INTO ta(n) VALUES ('b')
INSERT INTO ta(n) VALUES ('b')
GO
--删除前
SELECT * FROM ta
/*
id n
1 a
2 b
3 b
*/
--删除
;WITH cte AS (
SELECT ROW_NUMBER() OVER (PARTITION BY n ORDER BY id DESC) AS rid,* FROM ta
)
DELETE FROM cte WHERE rid>1
--删除后
SELECT * FROM ta
/*
id n
1 a
3 b
*/
至于多表的, 你自己试下吧。
个人不建议多表删除还这么用,哪怕能实现,因为可读性不好, 容易误操作。