mysql删除记录相同的日期时间

时间:2013-08-30 10:13:57

标签: mysql

我有一个包含约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查询,它将比较记录日期时间并消除重复项?

3 个答案:

答案 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;