我有一个包含约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查询,它将比较记录日期时间并消除重复项?
答案 0 :(得分:2)
您可以使用索引删除重复日期
ALTER IGNORE TABLE table_name ADD UNIQUE INDEX(date);
此查询将删除表中的重复值,如果需要,可以删除此索引
答案 1 :(得分:1)
试试这个:
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,date的组合索引。
警告:我只考虑了日期字段和ID,我排除了功能字段(feat1和feat2)。如果您想在这些字段中扩展先前的条件,则分析它们与行不同。
答案 2 :(得分:-2)
在查询中使用Having子句,如下所示: -
SELECT count(date_field)as dt_cnt from table name dt_cnt&gt; 1;