2017-09-19 4 views
-1

두 개의 테이블이 기본 및 외래 키와 연결되어 있습니다. 첫 번째 테이블에 특성 (id, name, ip, ...)이있는 서버 목록이 있습니다. 두 번째 테이블 향후 업데이트 정보 (id, server_id, last_update, next_update, ...)에 삽입하고 싶습니다.MySQL 첫 번째 테이블의 각 ID에 대해 두 번째 테이블에서 하나의 행만 선택하십시오.

이제 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 

나는 이미 문 으로 시도 제한 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 

(10)는 또한 나는 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입니다.

물론이 코드는 자바 코드에 구현할 수 있지만 MySQL에서이를 수행하는 방법을 알려주시겠습니까?

+0

https://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html – CBroe

답변

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 
+0

안녕 Nidhi257, 빠른 응답을 주셔서 감사합니다. 나는 그것을 지금 시도했지만 다음과 같은 오류가 발생했습니다 : # 1054 - 알 수없는 열 's.id'에서 'where 절'. – P3llazgu

관련 문제