Inner Join 및 LIMIT를 사용하여 각 서비스의 최신 상태를 검색하는 방법은 무엇입니까?
Jan 04, 2025 pm 12:02 PMInner Join 및 LIMIT를 사용하여 두 테이블에서 선택
Service 및 Status라는 두 테이블에서 각 서비스의 최신 상태를 검색하려면 Inner Join을 활용할 수 있습니다.
참고로 기존 테이블은 위치:
-
서비스:
-
열:
- ID: 정수
- 이름: 문자열
-
-
상태:
-
열:
- id: 정수
- 상태: 문자열
- service_id: 정수
- timestamp: DateTime
-
원하는 결과는 각 서비스의 최신 상태입니다. , 아래와 같이 표시됩니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까?
