SQL-使用事务删除重复记录行
/* 时间:2018-6-14 人员:LDH 功能:SQL-使用事务删除重复记录行 */ USE master; GO IF EXISTS ( SELECT COUNT(1) FROM sys.databases WHERE name = 'TestDB' ) BEGIN DROP DATABASE TestDB; END; CREATE DATABASE TestDB; GO USE TestDB; GO CREATE TABLE Students ( Id INT IDENTITY(1, 1) PRIMARY KEY, StuName NVARCHAR(20) NOT NULL, StuAge INT CHECK (StuAge BETWEEN 1 AND 150 ) DEFAULT 1, StuAddress NVARCHAR(100) DEFAULT '地址未知' ); INSERT INTO Students ( StuName, StuAge, StuAddress ) VALUES ('LDH', 28, N'中国上海'), ('LDH', 28, N'中国上海'), ('Lucy', 21, N'中国北京'), ('Lily', 28, N'中国南京'), ('Jack', 28, N'中国合肥'), ('Tom', 28, N'中国新疆'); SELECT Id, StuName, StuAge, StuAddress FROM Students; ------------------------------------------------------- /* 功能:SQL-使用事务删除重复记录行 */ -- 开始事务 BEGIN TRAN Tran_DeleteSameInfo; DELETE FROM dbo.Students WHERE Id NOT IN ( SELECT MIN(Id) FROM dbo.Students GROUP BY StuName, StuAge, StuAddress ); IF @@ERROR = 0 BEGIN -- 提交事务 COMMIT TRAN Tran_DeleteSameInfo; PRINT 'Success'; END; ELSE BEGIN -- 回滚事务 ROLLBACK TRAN Tran_DeleteSameInfo; PRINT 'Failure'; END; -- 删除之后查询,看是否还有重复记录行 SELECT Id, StuName, StuAge, StuAddress FROM Students;
本文作者:Love In Winter
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/9182451.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/LifeDecidesHappiness/p/9182451.html
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以扫一扫,任意打赏,您的鼓励是博主的最大动力!
![扫一扫,支付宝打赏](https://files.cnblogs.com/files/LifeDecidesHappiness/%E6%94%AF%E4%BB%98%E5%AE%9D.bmp)
![扫一扫,微信打赏](https://files.cnblogs.com/files/LifeDecidesHappiness/%E5%BE%AE%E4%BF%A1%E6%94%B6%E6%AC%BE%E7%A0%81.bmp)