2016-08-15 22 views
0

我有一個表格(其中包括)2列(說AB)與primary key和一個與timestamp(說C)。我想刪除除最後XXX條目以外的所有內容(按時間戳排序時)。任何人都可以幫我解決這個問題嗎?我想這應該是沿着線:DELETE從表語法

DELETE FROM表,其中A,B NOT IN(SELECT A,B FROM表順序用C DESC LIMIT XXX)

那是正確的SQL ?

編輯:不知何故,這個問題被關閉是重複的。然而,被引用的問題只適用於具有一個主鍵(或索引)的表格的答案。我如何將這個擴展到有兩個表格的表格?

+0

你有沒有試過你發佈的僞代碼? – Blobonat

+0

作爲一般規則,在運行刪除時,使用select語句將where子句放置到需要的位置並運行,並將'select * from'部分替換爲'delete from' – gabe3886

+0

我不明白。 LIMIT 10包含在'NOT IN'中,爲什麼要刪除這些? – Lieuwe

回答

0

你可以試試這個

DELETE FROM TABLE T1 INNER JOIN (SELECT A, B FROM TABLE ORDER BY C DESC LIMIT XXXX) AS T2 ON T1.A = T2.A AND T1.B = T2.B 
室內

選擇您定義的條件刪除。

+0

但是,刪除XXXXX條目不是嗎?我想刪除除XXXXX條目以外的所有內容。 – Lieuwe

+0

也許你可以 DELETE FROM TABLE T1 left JOIN(SELECT A,B FROM TABLE ORDER BY C DESC LIMIT XXXX)AS T2 ON T1.A = T2.A AND T1.B = T2.B where T2.A is null AND T2.B爲空 現在您將刪除行未連接 –