내 MySQL 데이터베이스에는 ID, 이름, 데이터 및 위치의 4 개 필드가있는 테이블 (cfg)이 있습니다. 이 테이블은 여러 하위 도메인 (위치)에 서비스를 제공합니다. 주어진 하위 도메인 (위치)에 대한 각 이름의 최신 행 목록을 가져와야합니다.복잡한 SQL 조인 쿼리 - 최신 행을 얻으십시오
예 데이터
id name data location
---------------------------
1 color red dc
2 color blue dc
3 size large sj
4 color green sj
5 size small dc
다음 쿼리는 잘 작동하지만 너무 복잡하고 느린 것 같다. 누구 제안이 있습니까?
SELECT c1.name, c1.data
FROM (SELECT * FROM cfg WHERE location = "dc") as c1
LEFT JOIN (SELECT * FROM cfg WHERE location = "dc") as c2 ON (c1.name = c2.name
AND c1.id < c2.id)
WHERE c2.id IS NULL
이 최대를 계산 GROUP BY
로
name data
--------------
color blue
size small
대단히 감사합니다. 이것은 트릭을했다! – Nathan