我想編寫一個腳本來刪除,除了最上面的一個所有記錄(如果它只是任意一個也沒關係,還有一樣要左一個記錄)。下面是我以現在的格式:刪除所有,但上面記錄在SQL服務器
DELETE FROM table
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM table
ORDER BY id DESC
LIMIT 1))
但我意識到,限制是不是在SQL Server 2005中識別的功能,所以我有點卡住,以什麼做的。任何人都有關於此主題的專業知識?而這些記錄並不重複,我只想取出除一個記錄以外的所有記錄。
UPDATE:
我意識到什麼,我想在這裏實現並不完全清楚。我需要做的是刪除除表中頂部記錄以外的所有記錄,因爲它在另一列中具有相同的值(我們稱之爲'anotherid')。
所以它就像從這個:
id value anotherid
1 3 1
2 4 1
3 5 2
4 6 2
5 7 2
要這樣:
id value anotherid
1 3 1
3 5 2
排序是否巧合?您選擇id 1,因爲anotherid = 1的id最低?或者因爲anotherid = 1的值最低?還是其他原因? – 2012-08-08 18:49:04
這是巧合的,anotherid不是唯一的,我只是想要它只會在桌面上留下一個anotherid記錄的一個實例 – user974047 2012-08-08 18:51:17
因此,只要只有一個,您不關心anotherid = 1的哪一行仍然存在? – 2012-08-08 18:53:24