我有两个与主键和外键相关的表。 在第一个表中,我有一个包含属性(id,name,ip,...)的服务器列表。 在第二个表中,我想在将来的Update-Informations(id,server_id,last_update,next_update,...)中插入。
现在我想在我的GUI中显示第一个表中的Server-Attrinbutes,并且仅显示每个服务器的第二个表的最后一个条目,其中等于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
我已经使用声明 LIMIT 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
此外,我尝试使用 DISTINCT
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-Code中实现这个,但是请你告诉我如何在MySQL中这样做。
答案 0 :(得分:0)
你试过下面的吗?
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