按多个重复行排序,然后删除

时间:2015-08-31 15:21:10

标签: mysql phpmyadmin

我有一个查询,我一直在phpmyadmin中根据重复的几何位置对条目进行排序,

查询如下所示:

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

它返回'c'

排序的正确结果

我想要做的是进一步扩展此查询以查看结果,并删除C> 1的所有条目。 10按日期排序(基本上使系统中的任何条目都比最近的10条更早消失)

这可能是我建议的方式还是我在完全错误的轨道上?

1 个答案:

答案 0 :(得分: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操作,如

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