Xác định Và Xóa Các Bản Ghi Trùng Lặp Trong Bảng SQL Server
Có thể bạn quan tâm
Trùng lặp dữ liệu là 1 vấn đề thường gặp đối với ai hay làm việc với CSDL còn cái việc mà đi dọn dẹp cho đống dữ liệu đó thì ôi thôi, mệt vãi chưởng. Xác định được dữ liệu bị lặp trong hàng nghìn, hàng triệu dòng thì vất vả vãi chưa kể nếu xóa nhầm thì có mà đi toi cả lũ. Mình cũng dặn các bạn là nên backup lại dữ liệu thật kĩ rồi mới tiến hành nhé, mình cũng vài lần cho đi DB của hệ thống nhưng may là cũng phục hồi được chứ không giờ ngồi nhà đá viết bài chứ chẳng chơi J
Còn trong bài này mình xin nêu 3 cách để thực hiện cách xóa các dữ liệu bị trùng lặp ở trong bảng.
Đầu tiên ta tạo ra ít dữ liệu giả nhỉ :3
USE [AdventureWorks]
GO
SELECT TOP 100 ContactID, FirstName, LastName, EmailAddress, Phone
INTO DummyData
FROM Person.Contact
SELECT * FROM DummyData
INSERT INTO DummyData
SELECT TOP 40 PERCENT FirstName, LastName, EmailAddress, Phone
from DummyData
SELECT * FROM DummyData
INSERT INTO DummyData
SELECT TOP 30 PERCENT FirstName, LastName, EmailAddress, Phone
from DummyData
SELECT * FROM DummyData
Cách 1: sử dụng row_number
;WITH dup as (
SELECT ContactID, FirstName, LastName, EmailAddress, Phone,
ROW_NUMBER() OVER(PARTITION BY FirstName, LastName ORDER BY ContactID) AS NumOfDups
FROM DummyData)
SELECT * FROM dup
WHERE NumOfDups > 1
ORDER BY ContactID
— Remove/Delete duplicate records:
;WITH dup as (
SELECT ContactID, FirstName, LastName, EmailAddress, Phone,
ROW_NUMBER() OVER(PARTITION BY FirstName, LastName ORDER BY ContactID) AS NumOfDups
FROM DummyData)
DELETE FROM dup
WHERE NumOfDups > 1
SELECT * FROM DummyData
Cách 2: sử dụng join
SELECT DISTINCT a.ContactID, a.FirstName, a.LastName, a.EmailAddress, a.Phone
FROM DummyData a
JOIN DummyData b
ON a.FirstName = b.FirstName
AND a.LastName = b.LastName
AND a.ContactID > b.ContactID
DELETE a
FROM DummyData a
JOIN DummyData b
ON a.FirstName = b.FirstName
AND a.LastName = b.LastName
AND a.ContactID > b.ContactID
SELECT * FROM DummyData
Cách 3: Sử dụng subquery
SELECT * FROM DummyData
WHERE ContactID NOT IN (SELECT MIN(ContactID)
FROM DummyData
GROUP BY FirstName, LastName)
— Remove/Delete duplicate records:
DELETE FROM DummyData
WHERE ContactID NOT IN (SELECT MIN(ContactID)
FROM DummyData
GROUP BY FirstName, LastName)
SELECT * FROM DummyData
Đặc biệt lưu ý là backup dữ liệu trước khi thực hiện nhé. Đặc biệt lưu ý phát nữa :3
Share this:
- Tweet
- More
Related
Leave a comment Cancel reply
Subscribe to Blog via Email
Enter your email address to subscribe to this blog and receive notifications of new posts by email.
Email Address:
Subscribe
Join 434 other subscribers Search for:Categories
- Agile
- Automation
- Books
- C#
- du lịch
- Javascript
- MVC
- Office
- performance
- POWERSHELL
- python
- SQL
- Tips
- WCF
- WPF
Recent Posts
- Suy nghĩ về hạnh phục
- Suy nghĩ về hệ thống thông báo
- Tây Việt – Hành trình ngàn dặm (chốt)
- Tây Việt – hành trình ngàn dặm ( phần 3)
- Tây Việt – Hành trình ngàn dặm (phần 2)
Recent Comments
| Anonymous on Tối ưu hiệu năng SQL (phần 2):… | |
| Chuong on Tối ưu hiệu năng SQL (phần 6):… | |
| Hihi on Tối ưu hiệu năng SQL (phần 3):… | |
| Top 11 Bdd Là Gì - V… on Áp dụng BDD cho dự án Agile (p… | |
| vietnh91 on Copy paste và câu chuyện xứ Bắ… |
Archives
- August 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- September 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
Chi nhánh
Hồ Tùng Mậu, Hà NộiBlog Stats
- 121,962 hits
Recent Posts
- Suy nghĩ về hạnh phục
- Suy nghĩ về hệ thống thông báo
- Tây Việt – Hành trình ngàn dặm (chốt)
- Tây Việt – hành trình ngàn dặm ( phần 3)
- Tây Việt – Hành trình ngàn dặm (phần 2)
Recent Comments
| Anonymous on Tối ưu hiệu năng SQL (phần 2):… | |
| Chuong on Tối ưu hiệu năng SQL (phần 6):… | |
| Hihi on Tối ưu hiệu năng SQL (phần 3):… | |
| Top 11 Bdd Là Gì - V… on Áp dụng BDD cho dự án Agile (p… | |
| vietnh91 on Copy paste và câu chuyện xứ Bắ… |
Archives
- August 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- September 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
Categories
- Agile
- Automation
- Books
- C#
- du lịch
- Javascript
- MVC
- Office
- performance
- POWERSHELL
- python
- SQL
- Tips
- WCF
- WPF
Blog at WordPress.com.
Up ↑
Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use. To find out more, including how to control cookies, see here: Cookie Policy- Comment
- Reblog
- Subscribe Subscribed
-
Code, code and more code Join 44 other subscribers Sign me up - Already have a WordPress.com account? Log in now.
-
-
-
Code, code and more code - Subscribe Subscribed
- Sign up
- Log in
- Copy shortlink
- Report this content
- View post in Reader
- Manage subscriptions
- Collapse this bar
-
Từ khóa » Xóa Dòng Trùng Trong Sql
-
Xóa Dữ Liệu Trùng Nhau Trong SQL Server - Vi
-
Xóa Dữ Liệu Trùng Nhau Trong SQL Server - Freetuts
-
Xóa Các Dòng Trùng Nhau Trong SQL
-
DISTINCT Loại Bỏ Kết Quả Trùng Nhau Trong SQL
-
Hướng Dẫn Tìm Kiếm Và Xóa Dữ Liệu Trùng Lắp Duplicate ... - Code 24h
-
Hướng Dẫn Tìm Kiếm Và Xóa Dữ Liệu Trùng Lắp ... - Lập Trình VB.NET
-
Xóa Dữ Liệu Trùng Trong Sql | Bản-ngã.vn
-
Xử Lý Duplicate Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts
-
Xóa Các Bản Ghi Trùng Nhau Trong Sql Server - GÓC LẬP TRÌNH
-
Làm Thế Nào để Xóa Các Hàng Trùng Lặp Trong Máy Chủ Sql? - HelpEx
-
Xóa Các Hàng Trùng Lặp Khỏi Bảng Trong Oracle? - HelpEx
-
Cách để Xóa Dữ Liệu Trùng Lặp Trong Oracle - WikiHow
-
Sửa Các Câu Lệnh SQL để Tinh Chỉnh Kết Quả Truy Vấn