假设我有以下查询。
SELECT ID, Email, ProductName, ProductModel FROM Products
如何修改它以使其不返回重复的电子邮件?
换句话说,当多行包含相同的电子邮件时,我希望结果只包含其中一行(最好是最后一行)。应允许在其他列中重复。
子句喜欢DISTINCT并且GROUP BY似乎适用于整行。所以我不确定如何解决这个问题。
DISTINCT
GROUP BY
如果您使用的是 SQL Server 2005 或更高版本,请使用:
SELECT * FROM ( SELECT ID, Email, ProductName, ProductModel, ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn FROM Products ) a WHERE rn = 1
编辑:使用 where 子句的示例:
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