如何将一个 table 中的最新行连接到另一个 table MYSQL

How do I join the most recent row in one table to another table MYSQL

我有2张桌子

首先是

地址
id 广告 日期时间
1 121.252.212.121 2015-04-20 08:23:04
2 121.252.212.122 2015-05-20 09:11:06
3 121.252.212.121 2015-05-20 11:56:04
4 121.252.212.123 2015-05-20 09:54:25
5 121.252.212.123 2015-05-20 10:23:04
6 121.252.212.122 2015-05-20 09:50:10
7 121.252.212.123 2015-05-20 12:50:02

第二个是

监控
server_id 广告 标签
1 121.252.212.121 北
2 121.252.212.122 南
3 121.252.212.123 东

我使用这个查询

SELECT monitor.label, addresses.datetime 从监视器 INNER JOIN 地址 ON monitor.ad=addresses.ad 按 monitor.label;

排序

我的输出

标签 日期时间
北方 2015-04-20 08:23:04
北方 2015-05-20 11:56:04
南 2015-05-20 09:11:06
南 2015-05-20 09:50:10
东 2015-05-20 09:54:25
东 2015-05-20 10:23:04
东 2015-05-20 12:50:02

但我想要的输出是获取最近的行并合并重复标签 下面的例子

我的愿望
标签 日期时间
北方 2015-05-20 11:56:04
南 2015-05-20 09:50:10
东 2015-05-20 12:50:02

谁能帮我解决这个问题?

注意* 地址 AD 不是主要的或唯一的 但监视器 AD 是主要的

只需使用 group bymax:

SELECT monitor.label, max(addresses.datetime) 
FROM monitor INNER JOIN addresses ON monitor.ad=addresses.ad 
group by monitor.label 
ORDER BY monitor.label;

使用 GROUP BY 子句。

SELECT label, MAX(datetime)
FROM monitor INNER JOIN addresses
ON monitor.ad = addresses.ad
GROUP BY label

这叫做 mysql group-wise maximum 有很多种方法,其中一种方法是

select 
m.label, 
a.datetime from monitor m 
join ( 
 select ad, max(datetime) as datetime from addresses group by ad
)a on a.ad = m.ad;