SQL Server 2008 - 使用 ROW_NUMBER 查找重复项

标签 sql sql-server

我有以下 SQL 可用于查找重复项

SELECT  *
FROM (SELECT
      id,
      ShipAddress,
      ShipZIPPostal,
      ROW_NUMBER() OVER (PARTITION BY shipaddress, shipzippostal ORDER BY shipaddress) ROWNUM
FROM orders
WHERE CONVERT(date, orderdate) = CONVERT(date, GETDATE())) x
WHERE rownum > 1

我只想看到行,如果 Rownum 的值 > 1,那么我想看到它对应的行,其中 rownum = 1。

所以基本上,如果一行有重复项,我想查看原始行及其所有重复项。

如果一行没有重复,那么我不想看到它(它会有 rownum = 1 )

请问我该怎么做?

干杯

最佳答案

使用 count(*)而不是 row_number() :

SELECT *
FROM (SELECT id, ShipAddress, ShipZIPPostal,
             COUNT(*) OVER (PARTITION BY shipaddress, shipzippostal) as cnt
      FROM orders
      WHERE CONVERT(date, orderdate) = CONVERT(date, GETDATE())
     ) x
WHERE cnt > 1;

关于SQL Server 2008 - 使用 ROW_NUMBER 查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34134302/

相关文章:

sql - 在 sql 中插入查询或更新哪个更快?

SQL 前值

sql - 为什么 Sql server 2014 在检查日期时运行很慢?

sql-server - 每个数据库映射到不同的链接服务器

java - 如何获取sql server中的当前日期时间?

java - JDBC代码中为什么会有双问号

mysql - AI ID 字段上的 WHERE 子句出现意外结果

javascript - 使用 javascript 在 html 中添加动态行

php - SELECT 循环内的 SELECT 循环

sql - 如何使用 SQL SERVER 计算每个多边形与多少点相交