我正在尝试从没有主键的表中删除重复项。表的结构如下所示:
|cID|changeDate|changeTime|operator|
|001|01.01.2005|12:00:00 |a |
|001|01.01.2005|12:00:00 |null |
|002|01.01.2005|12:00:00 |a |
|002|01.02.2005|12:00:00 |a |
|002|01.02.2005|12:45:00 |a |
|003|01.01.2005|12:00:00 |a |
|003|01.01.2005|12:00:00 |a |
|003|01.02.2005|12:00:00 |a |
|003|01.03.2005|12:00:00 |a |
|003|01.03.2005|12:00:00 |null |
我想要实现的是:检查重复的“cID”,保留在“changeDate”中具有最新日期的那个。如果两条记录具有相同的“changeDate”,则保留具有最新“changeTime”的记录。如果仍然存在重复,则在此结果中保留“操作员”中不为空的结果。
上表应如下所示:
|cID|changeDate|changeTime|operator|
|001|01.01.2005|12:00:00 |a |
|002|01.02.2005|12:45:00 |a |
|003|01.03.2005|12:00:00 |a |
DB是mysql,引擎是innodb。我想在不创建新表的情况下实现这一点。
我的sql技能有限,实际上几乎不存在。我一直在阅读和搜索一段时间,但我没有到达那里......
我尝试了不同的方法(临时表,使用内部连接选择)
任何帮助将不胜感激。