MySQL의 서브 쿼리에서의 order by는 경우에 따라 무의미하다.
MySQL은 서브쿼리의 결과 순서를 따로 메모리에 적재해 놓지 않기에 서브쿼리의 order가 메인쿼리에서는 무시됨.
따라서,
SELECT @rownum:=@rownum+1 as num, x.*
FROM (SELECT col1, col2
FROM TABLE1
ORDER BY col2
LIMIT 18446744073709551615
) X,
(SELECT @rownum:=0) r
위와 같이
서브쿼리에 LIMIT를 정해 주는 것으로 원하는 결과를 얻을 수 있다고 한다.
출처: https://amnesis.tistory.com/17 [달바라기]
출처: https://mariadb.com/kb/en/why-is-order-by-in-a-from-subquery-ignored/
'DATABASE(SQL)' 카테고리의 다른 글
Dual 테이블이란? (0) | 2021.04.19 |
---|---|
프로시저, 트랜잭션, 배치 (0) | 2021.04.16 |
MYSQL INSERT UPDATE (ON DUPLICATE KEY) (0) | 2020.08.21 |
mysql - 프로시저 (0) | 2020.06.24 |
전자정부 프레임워크에 트랜잭션 적용하기 (2) | 2020.03.31 |