首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用删除重复记录格式化sql表

用删除重复记录格式化sql表
EN

Stack Overflow用户
提问于 2015-10-25 09:05:34
回答 1查看 32关注 0票数 0

这可能是一个重复的问题,但我没有找到任何解决办法。我有这样的数据表。

代码语言:javascript
复制
Name    In_time out_time
John    NULL    9/1/2014 17:00
John    NULL    9/2/2014 11:18
John    NULL    9/2/2014 12:22
John    NULL    9/2/2014 13:22
John    NULL    9/3/2014 13:00
John    NULL    9/3/2014 17:13
John    NULL    9/3/2014 18:13
John    NULL    9/3/2014 19:13

我的问题是如何删除这些重复的数据-- .rows是唯一的,但out_time列中的日期相同(没有时间)。我只需要考虑到time.the输出应该是这样的日期,才需要永久删除这些重复项。

代码语言:javascript
复制
Name    In_time out_time
John    NULL    9/1/2014 17:00
John    NULL    9/2/2014 11:18
John    NULL    9/3/2014 13:00
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-25 09:15:45

将组语句更改为年、月和日。

代码语言:javascript
复制
SELECT name,
       in_time,
       min(out_time)
FROM your_table
GROUP BY name,
         DATE_FORMAT(in_time, "%Y-%m-%d");

若要删除原始表中的行,必须先执行两个步骤,首先添加一个虚拟字段(自动包含日期)

代码语言:javascript
复制
ALTER TABLE your_table ADD vdate DATE AS 
  ( DATE_FORMAT(out_time, "%Y-%m-%d") ) PERSISTENT;

然后用忽略创建一个新的唯一索引。

代码语言:javascript
复制
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx2 (name,vdate);

这将直接删除重复操作。

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

https://stackoverflow.com/questions/33327948

复制
相关文章

相似问题

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