2015-08-31 63 views
0

我有我已經在phpMyAdmin的排序基於重複的幾何位置條目一直致力於查詢,排序由多個重複的行,然後刪除

查詢看起來是這樣的:

SELECT *, COUNT(*) c 
FROM `spatial_locations` 
WHERE 1 
GROUP BY x,y,z HAVING c > 1 
ORDER BY `c` DESC 

它返回一個正確的結果,按'c'排序

我想要做的是進一步擴展此查詢來檢查結果,並刪除任何條目,其中C> 10按日期排序(基本上使任何條目比最近10年早的系統消失)

這是可能的方式,我建議它或我在完全錯誤的軌道?

回答

0

刪除其中C> 10 ....與你進行DELETE操作(OR)只是從你的SELECT結果集排除這些記錄任何條目。如果你只是想從選擇查詢結果集刪除,那麼你可能只需要修改HAVING條件說

HAVING c <= 10 

好吧,DELETE你可以在一個TEMPORARY插入表中的行,並使用該表而不是像

CREATE TEMPORARY TABLE test AS 
SELECT some_unique_id_column, COUNT(*) c 
FROM `spatial_locations` 
WHERE 1 
GROUP BY x,y,z 
HAVING c <= 10 
ORDER BY `c` DESC 

然後,像

DELETE FROM `spatial_locations` 
WHERE some_unique_id_column IN (
SELECT some_unique_id_column FROM test); 
+0

執行DELETE操作。當我取代'和'DELETE' SELECT'我得到一個錯誤。這也不考慮日期欄。 –

+0

不,您不能從查詢結果集中刪除。 – Rahul

+0

那就是問題了。你能幫我確定如何以最好的方式去除這些結果嗎? –

相關問題