首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql删除相同日期的记录

mysql删除相同日期的记录
EN

Stack Overflow用户
提问于 2013-08-30 10:13:56
回答 3查看 674关注 0票数 0

我有一个包含~ 300.000条记录的表,每对记录在特定的列上有相同的日期时间。

代码语言:javascript
复制
 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查询,以消除重复,并在最后只有

代码语言:javascript
复制
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查询,它将比较记录、日期时间和消除重复?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-30 11:22:22

可以使用索引来删除重复日期。

代码语言:javascript
复制
ALTER IGNORE TABLE table_name ADD UNIQUE INDEX(date);

此查询将删除表中的重复值,并在您需要时删除此索引。

票数 2
EN

Stack Overflow用户

发布于 2013-08-30 10:53:05

试试这个:

代码语言:javascript
复制
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)。如果要在这些字段中扩展以前的条件,则分析它们与行不同。

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 10:17:50

在查询中使用子句,如下所示:

从表名中选择Count(date_field)作为dt_cnt,表名dt_cnt >1;

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18530437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档