假设我有以下查询。
SELECT ID, Email, ProductName, ProductModel FROM Products
如何修改它,使其不返回重复的电子邮件?
换句话说,当几行包含同一封电子邮件时,我希望结果仅包含这些行之一(最好是最后一行)。在其他列中应允许重复。
子句喜欢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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句