Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để loại bỏ các hàng trùng lặp?

Giả sử không có giá trị nào, bạn GROUP BY các cột duy nhất và SELECT MIN (or MAX) RowId làm hàng cần giữ. Sau đó, chỉ cần xóa mọi thứ không có id hàng:

DELETE FROM MyTable
LEFT OUTER JOIN (
   SELECT MIN(RowId) as RowId, Col1, Col2, Col3 
   FROM MyTable 
   GROUP BY Col1, Col2, Col3
) as KeepRows ON
   MyTable.RowId = KeepRows.RowId
WHERE
   KeepRows.RowId IS NULL

Trong trường hợp bạn có GUID thay vì số nguyên, bạn có thể thay thế

MIN(RowId)

với

CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn)))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền truy cập của Android vào cơ sở dữ liệu SQL từ xa

  2. Cách truyền DateTime thành Time

  3. Chèn các ký tự vào giữa chuỗi trong SQL Server (T-SQL)

  4. Cách nhanh nhất để cập nhật 120 triệu bản ghi

  5. Làm cách nào để bạn xem TẤT CẢ văn bản từ ntext hoặc nvarchar (max) trong SSMS?