5
我有这样的(SQL2008)的表:从那里数大于1,删除,但保留一排
id url updated
1 http://url1.com null
2 http://url2.com <datetime>
3 http://url1.com <datetime>
我想删除的url1.com记录之一(优选地,其中更新不为空,但其优良的,如果它不工作方式)
我有这个疑问,它会删除所有重复的 - 但不保存记录(这是我很困惑):
DELETE FROM [table] WHERE url IN (
SELECT url
FROM [table]
GROUP BY url
HAVING COUNT(*) > 1)
我如何限制删除?结果将理想:
id url updated
1 http://url1.com null
2 http://url2.com <datetime>
现在它结束了,如:
id url updated
2 http://url2.com <datetime>
什么是这个巫术!只是将订单翻过来,这正是我所寻找的。我可以在哪里了解有关此查询的更多信息 – user2124871
很高兴工作。 'CTE'(公用表表达式)实际上并不是必须的,你可以使用派生表,但我认为这个代码更清晰。 'ROW_NUMBER()'是一个窗口分析函数,它们对于很多事情都非常有用,因此值得查看它们 – Lamak
@Lamak,你不需要CTE中的* – Anon