2
我有一個應用程序正在跟蹤地圖上的對象。我將對象位置存儲在表position
中。我只想保留第一個位置,我找到了對象和最後一個位置。MySQL保留MAX和MIN行並刪除其餘的
我面臨的第一個問題是清理現有記錄。對於某些對象,我有100個職位。我寫了下面的查詢來擦桌子:
DELETE
FROM position
WHERE object_id = 121
AND `time` NOT IN (SELECT max(`time`) FROM position WHERE object_id = 121)
AND `time` NOT IN (SELECT min(`time`) FROM position WHERE object_id = 121);
但顯然我不能在DELETE
聲明的子查詢中使用position
表。
我的第二個問題是在插入新對象之前刪除該對象的MAX(time)
記錄。我需要檢查我是否有超過一個位置的object
才能刪除最近的,否則我可能會刪除最早的(唯一的)記錄。
有沒有辦法優化這個過程?我在Ubuntu上運行MySQL最新版本。
乾杯, 馬克西姆
看起來好像它正在這樣做,在WHERE子句中添加表前綴。我想如果只有一個位置的對象,這是工作,因爲它獲得最小和最大的行。 – maxwell2022