SQL查询获取新的重复行
假设我有这个表结构SQL查询获取新的重复行,sql,sql-server,Sql,Sql Server,假设我有这个表结构 User ==== *Id *Email *City *DateCreated 根据这些数据: Id Email City DateCreated 1 eleven@gmail.com Hawkins 01-01-2018 2 jim.hopper@gmail.com Hawkins 01-01-2018 3 mike.wheel
User
====
*Id
*Email
*City
*DateCreated
根据这些数据:
Id Email City DateCreated
1 eleven@gmail.com Hawkins 01-01-2018
2 jim.hopper@gmail.com Hawkins 01-01-2018
3 mike.wheeler@gmail.com Hawkins 01-01-2018
4 dustin.henderson@gmail.com Hawkins 01-01-2018
5 eleven@gmail.com Hawkins 01-01-2021
6 eleven@gmail.com Pittsburgh 01-01-2021
我想运行一个查询,只返回同一电子邮件和城市的最新重复记录:
5 eleven@gmail.com Hawkins 01-01-2021
在这种情况下,显示的记录不是重复的,因为城市与ID 5和ID 6不同 但您可能会通过电子邮件和创建日期来执行行数函数和分区
这里有一个很好的例子,在这种情况下,显示的记录不是重复的,因为城市与ID 5和ID 6不同 但您可能会通过电子邮件和创建日期来执行行数函数和分区 下面是一个很好的例子,您可以使用窗口函数来完成 您可以使用窗口函数来完成 您可以使用窗口函数来获得此结果 挑选* 从…起 选择*, 按t.Email划分的行数,按t.DateCreated DESC rn划分的城市顺序, 通过t.Email、t.City cnt对分区进行计数* 从你的桌子上 T 其中t.cnt>1且t.rn=1 如果还需要没有重复的行,请删除计数及其筛选器。您可以使用窗口函数获得此结果 挑选* 从…起 选择*, 按t.Email划分的行数,按t.DateCreated DESC rn划分的城市顺序, 通过t.Email、t.City cnt对分区进行计数* 从你的桌子上 T 其中t.cnt>1且t.rn=1
如果还需要没有重复的行,请删除计数及其筛选器。根据什么复制?电子邮件和/或城市和/或日期或@jarlh电子邮件和城市。刚刚相应地更新了问题。您使用的是哪种dbms?microsoft sql Server复制根据什么?电子邮件和/或城市和/或日期或@jarlh电子邮件和城市。刚刚相应地更新了问题。您使用的是哪种dbms?microsoft sql Server谢谢,但我指的是记录1和记录5,其中电子邮件相同,城市相同,但DateCreated不同。那么,行号将非常有效,您可以按日期描述进行分区,最上面的结果将是您的副本。很抱歉,这让我处于同一位置,因为我不熟悉行数。请您详细说明一下好吗?谢谢,但我说的是记录1和记录5,其中电子邮件相同,城市相同,但创建的日期不同。然后,行号会很好地工作,您可以按日期描述进行划分,最高的结果将是您的副本。很抱歉,这让我处于同一位置,因为我不熟悉行号。你能详细解释一下吗?谢谢,但似乎有一个不正确的语法问题,我不想尝试这个。很抱歉,遗漏了逗号和from,这就成功了。谢谢谢谢,但似乎有一个不正确的语法问题,不让我尝试这个。很抱歉,遗漏了逗号和from,这就成功了。谢谢谢谢,但似乎有一个不正确的语法问题,不让我尝试现在修复它。FilteredResult之后缺少AS关键字。谢谢,但似乎有一个不正确的语法问题,不允许我尝试。现在修复了它。FilteredResult后缺少AS关键字。
;WITH FilteredResult AS (
SELECT
Id,
Email,
City,
DateCreated,
DuplicatedRows = ROW_NUMBER() OVER(PARTITION BY Email, City ORDER BY Id)
FROM your_table_name
)
SELECT *
FROM FilteredResult
WHERE DuplicatedRows = 1