Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога да премахна дублиращи се редове?

Ако приемем, че няма нулеви стойности, вие GROUP BY уникалните колони и SELECT MIN (or MAX) RowId като ред за запазване. След това просто изтрийте всичко, което няма идентификатор на ред:

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

В случай, че имате GUID вместо цяло число, можете да замените

MIN(RowId)

с

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. прикачената база данни е само за четене

  2. Динамичен SQL - EXEC(@SQL) срещу EXEC SP_EXECUTESQL(@SQL)

  3. Защо 1899-12-30 е нулевата дата в Access / SQL Server вместо 12/31?

  4. Как да зададете езика по подразбиране за всички нови влизания в SQL Server (T-SQL)

  5. SQL:Изберете колони само със стойности NULL