본문 바로가기
MySql

MySQL SQL 쿼리에서 LEFT JOIN의 순서를 정렬하는 방법은 무엇입니까?

by 베이스 공부 2020. 10. 14.
반응형

OK 미친 듯이 대답하기 위해 인터넷 검색을 시도했지만 해결할 수 없었으므로 누군가가 도울 수 있기를 바랍니다.

사용자 테이블, 매우 간단한 테이블이 있다고 가정 해 보겠습니다.

id | userName
3    Michael
4    Mike
5    George

그들의 차와 가격에 대한 또 다른 테이블이 있습니다.

id | belongsToUser | carPrice
1    4               5000
2    4               6000
3    4               8000

이제 내가해야 할 일은 다음과 같은 것입니다 (재 작성해도 괜찮습니다).

   SELECT
      `userName`,
      `carPrice`
   FROM `users`
   LEFT JOIN `cars`
   ON cars.belongsToUser=users.id
   WHERE `id`='4'

다음을 반환합니다.

Mike | 5000

하지만 첫 번째 항목이 아닌 특정 사용자의 가장 비싼 차가 필요합니다.

그래서 질문 : carPrice, DESC가 주문하도록 LEFT JOIN 테이블을 어떻게 설정합니까?

 

해결 방법

 

GROUP BY 와 함께 MAX 를 사용해보십시오.

SELECT u.userName, MAX(c.carPrice)
FROM users u
    LEFT JOIN cars c ON u.id = c.belongsToUser
WHERE u.id = 4;
GROUP BY u.userName;

group by 절은 group by 열의 고유 한 조합을 기반으로 선택한 레코드를 그룹으로 분할하는 데 사용됩니다. 그러면 각 레코드 그룹에 차례로 적용될 집계 함수 (예 : MAX, MIN, SUM, AVG, ...)를 사용할 수 있습니다. 데이터베이스는 각 그룹에 대해 단일 결과 레코드를 반환합니다.

예를 들어 다음과 같은 테이블에 시간 및 위치에 따른 온도를 나타내는 레코드 세트가있는 경우 :

Location   Time    Temperature
--------   ----    -----------
London     12:00          10.0
Bristol    12:00          12.0
Glasgow    12:00           5.0
London     13:00          14.0
Bristol    13:00          13.0
Glasgow    13:00           7.0
...

그런 다음 위치별로 최대 온도를 찾으려면 온도 기록을 그룹으로 분할해야합니다. 여기서 특정 그룹의 각 기록은 동일한 위치를가집니다. 그런 다음 각 그룹의 최대 온도를 찾고 싶습니다. 이를 수행하는 쿼리는 다음과 같습니다.

SELECT Location, MAX(Temperature)
FROM Temperatures
GROUP BY Location;

 

참조 페이지 https://stackoverflow.com/questions/5355585

 

 

반응형

댓글