MySql Select Distinct 有两个表和时间戳
Posted
技术标签:
【中文标题】MySql Select Distinct 有两个表和时间戳【英文标题】:MySql Select Destinct with two tables and by Timestamp 【发布时间】:2011-08-01 09:16:29 【问题描述】:我想按时间戳和 UnitID 选择信息。这是两张表:
表信息:
ID | UnitID | Time | Info
-----------------------------------------------
1 | 101 | 2011-07-20 08:22:02 | info 101
2 | 102 | 2011-07-21 08:22:02 | info 102
3 | 103 | 2011-07-22 08:22:02 | info 103
4 | 104 | 2011-07-23 08:22:02 | info 104
5 | 104 | 2011-07-25 08:22:02 | info 104
6 | 102 | 2011-07-26 08:22:02 | info 102
我想要的结果是每个 UnitID 和此 UnitID 的最新时间(时间戳)为:
ID | UnitID | Time | Info
------------------------------------------------
1 | 101 | 2011-07-20 08:22:02 | info 101
3 | 103 | 2011-07-22 08:22:02 | info 103
5 | 104 | 2011-07-25 08:22:02 | info 104
6 | 102 | 2011-07-26 08:22:02 | info 102
如何进行此查询?
【问题讨论】:
请不要让格式变得更糟,user872497。回滚到 Harry Joy 的版本。另外,不要编辑它thanks and greetings。 【参考方案1】:SELECT t1.ID, t1.UnitID, t2.MaxTime, t1.Info
FROM Info t1
INNER JOIN (SELECT UnitID, MAX(Time) As MaxTime
FROM Info
GROUP BY UnitID) AS t2
ON (t1.UnitD = t2.UnitID AND t1.Time = t2.MaxTime)
【讨论】:
【参考方案2】:试试这个 -
SELECT t1.* FROM table1 t1
JOIN (
SELECT UnitID, MAX(Time) maxtime FROM table1 GROUP BY UnitID
) t2
ON t1.UnitID = t2.UnitID AND t1.Time = t2.maxtime;
用实际的表名更改“table1”。
【讨论】:
感谢所有快速回答!让它与 cularis 一起使用!【参考方案3】:也许是这个?
SELECT * FROM Info GROUP BY UnitID HAVING Time = MAX(Time);
【讨论】:
以上是关于MySql Select Distinct 有两个表和时间戳的主要内容,如果未能解决你的问题,请参考以下文章
mysql 去除重复 Select中DISTINCT关键字的用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留