Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将一个表中最近的行连接到另一个表_Mysql_Sql_Join_Greatest N Per Group - Fatal编程技术网

Mysql 如何将一个表中最近的行连接到另一个表

Mysql 如何将一个表中最近的行连接到另一个表,mysql,sql,join,greatest-n-per-group,Mysql,Sql,Join,Greatest N Per Group,我有两张桌子 首先是 地址 idaddatetime 1 121.252.212.1212015-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

我有两张桌子

首先是

地址 idaddatetime 1 121.252.212.1212015-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

二是

监视器 服务器id广告标签 1212.252.212.121北 2212.252.212.122南部 3 121.252.212.123东部

我使用这个查询

选择monitor.label、addresses.datetime 来自监视器 内部连接地址 在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

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

我的愿望 labeldatetime 北2015-05-20 11:56:04 南2015-05-20 09:50:10 东部2015-05-20 12:50:02

在这件事上有人能帮我吗

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

只需使用group by和max:

使用GROUPBY子句

这就是所谓的,有很多方法可以做到这一点,其中一种方法是

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;

Max不保证在加入表时返回同一行。Abhik,幸运的是,op只需要两列。另一个问题是,我想查询当前日期和时间以及提前1小时的数据。今天的日期时间是2015年4月6日上午10点。我只想查询谁的日期时间在6月4日上午10点到上午11点之间/2015@CarlvicJapitanaLim尝试datetime介于now和DATE_ADDnow之间的位置,HOURHi先生,还有一个问题,如果我想在日期和时间内查询,比如,今天的时间是上午10点,我想查询上午10点到上午11点的当前日期,只需在内部查询中添加一个where子句,作为select ad,maxdatetime作为datetime,地址中的datetime介于concatcurdate,,'10:00:00'和concatcurdate,',“11:00:00”组由adHi先生抱歉,我指的是当前时间和提前1小时。例如,今天的datetime是2015年4月6日上午10点,我只想查询谁的datetime在2015年4月6日上午10点到上午11点之间,所以如果我在2015年4月6日下午3点再次检查,我只想查询谁的datetime在2015年4月6日下午3点到下午4点之间,您可以这样做datetime从现在到date\u addnow,间隔1小时先生,那么我的查询应该是这样的??从monitor_servers中选择m.label,a.datetime,从地址中选择m.join select ad,maxdatetime作为datetime,其中datetime介于now和date_addnow之间,间隔1小时由ada在a.ad上分组=m.ad
SELECT label, MAX(datetime)
FROM monitor INNER JOIN addresses
ON monitor.ad = addresses.ad
GROUP BY label
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;