我有一个包含~ 300.000条记录的表,每对记录在特定的列上有相同的日期时间。
id date feat1 feat2
---------------------------------------------------------------------------
1 10-12-2013 21:35:10 4.2 4.6
2 10-12-2013 21:35:10 4.2 4.61
3 10-12-2013 21:35:20 4.4 4.3
4 10-12-2013 21:35:20 4.4 4.31
5 10-12-2013 21:35:30 4.6 4.4
6 10-12-2013 21:35:30 4.6 4.41 显然,这些记录的日期值相同,每对相同。因此,我需要一个mysql查询,以消除重复,并在最后只有
1 10-12-2013 21:35:10 4.2 4.6
3 10-12-2013 21:35:20 4.4 4.3
5 10-12-2013 21:35:30 4.6 4.4什么是mysql查询,它将比较记录、日期时间和消除重复?
发布于 2013-08-30 11:22:22
可以使用索引来删除重复日期。
ALTER IGNORE TABLE table_name ADD UNIQUE INDEX(date);此查询将删除表中的重复值,并在您需要时删除此索引。
发布于 2013-08-30 10:53:05
试试这个:
CREATE TEMPORARY TABLE app
(id int)
INSERT INTO app (id)
SELECT t.id
FROM myTable t
WHERE EXISTS(
SELECT 'PREVIOUS'
FROM myTable t2
WHERE t2.id < t.id
AND t2.date = t.date
)
DELETE FROM myTable
WHERE id in (select id from app)我使用了一个临时表,因为在MySql中,您不能删除子查询中相同表的表。我不喜欢使用DELETE和JOIN (在MySql中可以执行)。
如果您想优化您的查询请和组合索引的id,日期。
警告:我只考虑了日期字段和id,排除了功能字段(feat1和feat2)。如果要在这些字段中扩展以前的条件,则分析它们与行不同。
发布于 2013-08-30 10:17:50
在查询中使用子句,如下所示:
从表名中选择Count(date_field)作为dt_cnt,表名dt_cnt >1;
https://stackoverflow.com/questions/18530437
复制相似问题