sql >> Databasteknik >  >> RDS >> Sqlserver

DISTINCT för endast en kolumn

Om du använder SQL Server 2005 eller senare, använd detta:

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:Exempel med en where-sats:

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. Hur man extraherar en delsträng från en sträng i Oracle/SQLite

  2. postgresql installationer för enstaka tillfällen

  3. Hur man skriver en CASE-sats i SQL

  4. Resultatcache