DISTINCT仅一栏

乔纳森·伍德

假设我有以下查询。

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章