我有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 ORDER BY monitor.label;
MyOutput中
标签日期时间
北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
但我的愿望输出是获取最近的行并合并重复的标签
以下示例
MYDESIRE
标签日期时间
北2015-05-20 11:56:04
南2015-05-20 09:50:10
东2015-05-20 12:50:02
任何人都可以帮我解决这个问题吗?
注意*地址AD不是主要的或唯一的 但监控AD是主要的
答案 0 :(得分:2)
这称为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;
答案 1 :(得分:0)
只需使用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;
答案 2 :(得分:0)
使用GROUP BY
条款。
SELECT label, MAX(datetime)
FROM monitor INNER JOIN addresses
ON monitor.ad = addresses.ad
GROUP BY label