MySQL - 根据相同日期条目删除重复项

4
我有这个数据集:
+----+---------------------+
| id |        date         |
+----+---------------------+
|  1 | 2017-01-01 12:30:00 |
|  2 | 2017-01-01 12:30:00 |
|  3 | 2017-01-02 00:00:00 |
|  4 | 2017-01-03 00:00:00 |
+----+---------------------+
其中日期重复的记录需要删除,只保留其中一个。我想知道怎样处理。我的想法是先按照日期排序,然后迭代每行数据,判断日期是否出现过来决定是否删除该行。或者使用COUNT/HAVING函数。
感谢。

按日期进行分组可能会有所帮助。 - Sadikhasan
2个回答

4
您可以使用聚合功能:
select min(id) as id, date
from t
group by date;

如果你有额外的列,那么这种方法就不太适合了。相反,应该在where子句中使用过滤器:

select t.*
from t
where t.id = (select min(t2.id) from t t2 where t2.date = t.date);

我使用了后一种方法。谢谢Gordon。 - Hurricane

2
你可以简单使用group by函数按照某一列进行分组来得到结果。
SELECT * FROM table_name GROUP BY date;

但是有时候在这种情况下group by无法正常工作请看这里

你应该使用

1)using min(id)

SELECT * FROM your_table GROUP BY date HAVING MIN(id);

2)using min(date)

SELECT * FROM your_table GROUP BY date HAVING MIN(date);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接