我有一個4列的表格:允許具有相同GUID的最多10個項目
ID,GUID,二進制,時間戳。
我的目標是將二進制文件的最近10次修改保存到數據庫中。如果插入第11個修改,則應刪除最早的修改。
我目前的做法是做的兩個步驟(僞MSSQL):一個聲明
1) DELETE FROM mytable WHERE GUID = 'XXX' AND
ID NOT IN (SELECT TOP 9 ID FROM mytable WHERE GUID = 'XXX' ORDER BY Timestamp)
2) INSERT new binary ...
有沒有辦法做到這一點更有效,也許?有沒有辦法讓mssql和postgresql兼容(沒有TOP/Limit)?
+1,事實證明,從cte刪除不工作在PostgreSQL :( –
謝謝,我可以執行一個插入沒有第二個查詢? – VladL
@RomanPekar ...它在SQL小提琴(http:// www .sqlfiddle.com /#!12/f1107/1)。 –