假设我有以下查询。
SELECT ID, Email, ProductName, ProductModel FROM Products
如何修改它以便它不返回重复的电子邮件?
换句话说,当多行包含相同的电子邮件时,我希望结果仅包含其中一行(最好是最后一行)。其他列中应允许重复。
子句如DISTINCT
and 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)