MySQL - 根据相同的日期条目

时间:2017-02-06 12:53:15

标签: mysql sql

我有这个:

+----+---------------------+
| 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 |
+----+---------------------+

这是大型数据集的一部分(具有各种连接)。

我希望删除具有重复日期的条目,同时保留其中一个,即:。

+----+---------------------+
| id |        date         |
+----+---------------------+
|  1 | 2017-01-01 12:30:00 |
|  3 | 2017-01-02 00:00:00 |
|  4 | 2017-01-03 00:00:00 |
+----+---------------------+

有没有人知道这方面的好方法。我曾经想过排序然后迭代每一行并根据之前是否遇到过日期进行删除。或者在日期使用COUNT / HAVING。

感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用聚合:

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);

答案 1 :(得分:1)

您可以通过

简单地使用group by函数来获得结果
SELECT * FROM table_name GROUP BY date;

但有些时候group by在这种情况下无法正常工作see here

你应该使用

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);