IF OBJECT_ID('cardDetail') IS NOT NULL
DROP TABLE cardDetail
CREATE TABLE cardDetail
(
id INT IDENTITY(1,1) PRIMARY KEY,
cardNO VARCHAR(8),
NAME VARCHAR(30),
idCard VARCHAR(18),
cardState CHAR(1)--卡片状态 1合格 0不合格
)
INSERT cardDetail(cardNO,NAME,idCard,cardState)
VALUES
('001','张三','31010',0),
('001','张三','31010',1),
('002','李四','31011',0),
('003','王五','31019',1),
('001','张三','31014',0),
('003','王五','31012',1),
('004','欧阳','31013',0),
('004','欧阳','31013',1),
('001','张三','31014',0),
('001','张三','31014',1),
('002','李四','31011',1),
('003','王五','31016',1),
('001','张三','31015',0),
('003','王五','31012',1),
('004','欧阳','31017',1),
('004','欧阳','31018',0)
方法一:
delete a
from cardDetail a
where exists(select 1
from cardDetail b
where b.cardNO=a.cardNO and b.idcard=a.idcard
and b.id>a.id)
方法二:
with m as (
select row_number() over(partition by cardNO ,idcard order by id desc) rn ,* from cardDetail
)
delete m where rn > 1
评论
0