我有一个这样的表(SQL2008):
id url updated
1 http://url1.com null
2 http://url2.com <datetime>
3 http://url1.com <datetime>
Run Code Online (Sandbox Code Playgroud)
我想删除其中一条url1.com记录(最好是更新的地址不是空的,但如果它不起作用则很好)
我有这个查询,删除所有重复项 - 但不保留记录(这是我感到困惑的地方):
DELETE FROM [table] WHERE url IN (
SELECT url
FROM [table]
GROUP BY url
HAVING COUNT(*) > 1 )
Run Code Online (Sandbox Code Playgroud)
如何限制删除?结果理想情况是:
id url updated
1 http://url1.com null
2 http://url2.com <datetime>
Run Code Online (Sandbox Code Playgroud)
现在它最终结果如下:
id url updated
2 http://url2.com <datetime>
Run Code Online (Sandbox Code Playgroud)
Lam*_*mak 10
如果SQL2008是SQL Server 2008,那么您可以这样做:
;WITH CTE AS
(
SELECT *,
RN = ROW_NUMBER() OVER( PARTITION BY url
ORDER BY updated DESC)
FROM [table]
)
DELETE FROM CTE
WHERE RN > 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10727 次 |
| 最近记录: |