我有两个与主钥匙相关的表。在第一个表中,我有一个带有属性(ID,name,ip,...)的服务器列表。在第二个表中,我想插入将来的更新信息(id,server_id,last_update,next_update,...)。
现在,我想在我的gui中显示第一个表的server-attrinbutes,唯一的使用equals server_id的每个服务器的第二个表中的最后一个条目。
表1:
id
name
ip
description
.
.
表2:
id
server_id
last_update
next_update
.
.
这是我已经尝试过的一个简短示例:
select s.id, s.name, sp.last_update, sp.next_update
from server s
left join (select * from server_updates order by server_id desc) sp
on sp.server_id = s.id
我已经使用语句限制1
select s.id, s.name, sp.last_update, sp.next_update
from server s
left join (select * from server_updates order by server_id desc limit 1) sp
on sp.server_id = s.id
也尝试使用不同的
select DISTINCT s.id, s.name, sp.last_update, sp.next_update
from server s
left join (select * from server_updates order by server_id desc limit 1)
但是我总是从第二个表
获得所有条目+------------+-----------------+---------------+------------+------------+
| Server0101 | Server0101_name | Server0101_ip | 2017-09-20 | 2017-10-20 |
| Server0101 | Server0101_name | Server0101_ip | 2017-10-20 | 2017-11-20 |
| Server0102 | Server0102_name | Server0102_ip | 2017-05-01 | 2017-06-01 |
我只想从第一个表中的每个ID中的第二行中的一行。
当然我可以在我的Java代码中实现此功能,但是请您告诉我如何在MySQL中执行此操作。
您是否尝试过以下一个?
select s.id, s.name, sp.last_update, sp.next_update
from server s
left join (select * from server_updates where server_id =s.id order by server_id desc limit 1) sp
on sp.server_id = s.id