我在一個postgres數據庫中有一個非常大的數據集合,我希望在特定的時間內保存數據...但是我做的是而不是想要它從任何給定的位置獲得最新的迭代數據&現場組合。SQL:只有在沒有較新的匹配記錄時才刪除舊記錄?
基本上,我已經得到了有location (bigint)
,site (bigint)
,readdate (bigint)
,和一點點伴隨數據(注意一個非常大的表:會有一個給定地點,位置和readdate多個條目 - 但對任何事相同的readdate被認爲是同一次掃描的一部分,並且需要保留給定的位置)。
目前,我剛剛設置了擺脫所有舊記錄...但存在的可能性,一個特定的網站和位置組合將停止發佈數據一段時間,我想保留最後的狀態如果發生的話。我在做PHP的SQL查詢,所以我很確定我可以一起竊取一些非常難看的代碼,它們爲任何給定的站點&位置組合找到最新的readdate,然後刪除比那個位置更新的東西,或者刪除基於日曆限制(以較低日期爲準),但我更願意將決策工作負載放在SQL查詢中,而不必首先獲取所有位置,站點和max(readdate)條目的列表,然後在php中進行遍歷,從而製作單個刪除查詢。
$query="DELETE FROM votwdata WHERE readdate < '".$limit."';";
- 任何想法,良好的修訂:
我當前的查詢(這並不做我想做的,因爲它之前$限制刪除的所有內容)是由申報?
我不清楚在什麼條件下你想保存記錄......你可以給一個樣本記錄的例子或打破這個問題,使其更具可讀性嗎? – vanamerongen
然後在sqlfiddle上發佈圖表,以便更容易回答。 –
這很難讀。請參考SO [編輯工具](http://stackoverflow.com/editing-help)和[PostgreSQL的信息頁](http://stackoverflow.com/tags/postgresql/info),並改進你的問題。 –