SQL多字段删除重复项

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
SQL查看表空间占用大小 IIS 服务器安装SSL证书及URL重写

评论

0
请遵守社区规范,文明评论。含违禁词的内容将进入审核队列。
0/2000

文章目录

    文章目录