집 >데이터 베이스 >MySQL 튜토리얼 >Inner Join 및 LIMIT를 사용하여 각 서비스의 최신 상태를 검색하는 방법은 무엇입니까?
Inner Join 및 LIMIT를 사용하여 두 테이블에서 선택
Service 및 Status라는 두 테이블에서 각 서비스의 최신 상태를 검색하려면 Inner Join을 활용할 수 있습니다.
참고로 기존 테이블은 위치:
서비스:
열:
상태:
열:
원하는 결과는 각 서비스의 최신 상태입니다. , 아래와 같이 표시됩니다.
id | name | status | timestamp |
---|---|---|---|
1 | Test1 | OK | October, 15 2015 09:08:07 |
2 | Test2 | OK | October, 15 2015 10:15:23 |
이전 설명에는 제한이 있었습니다. 최신 상태 검색 시:
SELECT ser.id, ser.name, a.status, a.timestamp from Service ser inner join (select * from status order by Status.timestamp DESC limit 1) as a on a.service_id = ser.id
최신 상태를 올바르게 선택하려면 각 서비스의 최대 타임스탬프를 식별하는 하위 쿼리가 필요합니다.
SELECT service_id, MAX(timestamp) AS MaxDate FROM status GROUP BY service_id
이 하위 쿼리는 service_id 및 MaxDate라는 두 개의 열이 있는 새 테이블. MaxDate 열은 각 서비스의 최신 타임스탬프를 나타냅니다.
이 하위 쿼리를 사용하면 기본 쿼리를 수정하여 최대 타임스탬프 테이블과 서비스 테이블을 조인할 수 있습니다.
SELECT ser.id, ser.name, s.status, s.timestamp FROM Service ser INNER JOIN status as s ON s.service_id = ser.id INNER JOIN ( SELECT service_id, MAX(timestamp) AS MaxDate FROM status GROUP BY service_id ) AS a ON a.service_id = s.service_id AND a.MaxDate = s.timestamp;
조인하여 service_id와 MaxDate가 모두 표시되므로 각 서비스의 최신 상태만 표시되므로 원하는 결과를 얻을 수 있습니다.
위 내용은 Inner Join 및 LIMIT를 사용하여 각 서비스의 최신 상태를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!