sql >> Database >  >> RDS >> Sqlserver

DISTINCT voor slechts één kolom

Als u SQL Server 2005 of hoger gebruikt, gebruik dan dit:

SELECT *
  FROM (
                SELECT  ID, 
                        Email, 
                        ProductName, 
                        ProductModel,
                        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
                    FROM Products
              ) a
WHERE rn = 1

EDIT:Voorbeeld met een waar-clausule:

SELECT *
  FROM (
                SELECT  ID, 
                        Email, 
                        ProductName, 
                        ProductModel,
                        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
                    FROM Products
                   WHERE ProductModel = 2
                     AND ProductName LIKE 'CYBER%'

              ) a
WHERE rn = 1


  1. Opgeslagen procedure om dubbele records in SQL-tabel te verwijderen

  2. Cursor in procedure die meer waarden retourneert dan query

  3. Identiteitstoename springt in SQL Server-database

  4. CSV in SQL-ontwikkelaar…