如何将一个 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 by
和 max
:
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;
我有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 by
和 max
:
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;