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