我有一个查询,我一直在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条更早消失)
这可能是我建议的方式还是我在完全错误的轨道上?
答案 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);