感谢您阅读我的博客,如果您现在工作、学习累了或者疲惫了,不妨聆听一下音乐,它能够减轻你的疲劳,还能够带给您一种舒适愉悦的心情。如果您认为这篇文章还不错或者有所收获,您可以在页面 右侧和底部 扫描二维码 打赏我,您的鼓励是我继续写作、分享的最大动力!

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;
posted @ 2018-06-14 12:07  Love In Winter  阅读(380)  评论(0编辑  收藏  举报
作者: LifeDecidesHappiness
出处: http://www.cnblogs.com/LifeDecidesHappiness/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,否则保留追究法律责任的权利,且在文章页面明显位置给出原文连接,如有问题,可以通过以下邮箱地址 2468881301@qq.com  联系我,非常感谢。
踏实做一个为人民服务的搬运工!
如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能,您的支持和鼓励是我继续写作、分享的最大动力!

点击关注不迷路,让我带你上高速!