미니츠미
634
2020-11-20 14:07:01 작성 2020-11-20 14:07:20 수정됨
4
228

MySQL WHERE절, ORDER BY절 질문


MySQL에서 아래와 같은 테이블이 있다고 할 때


Students

nameyeargrade
Cady20171
Michael20183
Johnson20162
Noel20194

이런 쿼리를 MySQL로 실행했다고 한다면 

SELECT * FROM (SELECT * FROM students WHERE grade>2) a ORDER BY grade DESC;


결과로

이런 grade에 대한 내림차순으로 정렬된 결과가 나올 것 같았는데

nameyeargrade
Noel
2019
4
Michael
2018
3
Johnson
2016
2

실제로 실행해보면 grade>2를 만족하지만 정렬은 안된 결과가 나오는데 이걸 위 테이블대로 결과가 나오게 하려면 어떻게 해야할까요?

0
  • 답변 4

  • 미니츠미
    634
    2020-11-20 14:10:55

    물론 살짝 순서만 바꾼 아래 두 쿼리도 똑같은 의도치 않은 결과가 나오네요.

    SELECT * FROM students WHERE grade>2 ORDER BY grade DESC;
    SELECT * FROM (SELECT * FROM students ORDER BY grade DESC) a WHERE grade>2;
  • byungil
    2020-11-20 14:17:06 작성 2020-11-20 14:45:38 수정됨


    SELECT a.name, a.year, a.grade FROM students AS a
    INNER JOIN (SELECT `year`, MAX(Grade) AS grade
    	    FROM students 
                WHERE grade > 1
    	    GROUP BY `Year`) AS g
    ON a.`Year` = g.`Year` AND a.Grade = g.Grade
    ORDER BY a.`year`;

    연도별 최대 grade 뽑기는 이런식이라는군요..

  • Eleutherius
    680
    2020-11-20 14:19:32

    각각 결과가 어떻게 출력이 되나요???

  • 레버리지
    2k
    2020-11-20 16:32:00

    전체쿼리가 아닌가보네요 샘플로는 답을 얻을수 없습니다.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.