안녕하세요.
방금 질문을 잘못 올린거 같아 다시 질문 올립니다.
rownum과 상관없이 실행 순서의 문제인거 같아서요.
특정 db에서 만 아래의 현상이 일어나고 있습니다.
select @rownum := @rownum + 1 as runm, a.reg_dtm from(select * from product_mng ,( SELECT @ROWNUM := 0 ) R ) a order by a.reg_dtm asc;
위 쿼리 시 select 조회 후 > order by 로 rnum이 3번째 이미지처럼 뒤죽박죽으로 나오는게 정상일거같은데 특정db에서는 1,2번째 그림처럼 정상적으로 나오고 있습니다. 이유가 있을까요?
MySQL, MariaDB 의 경우 오라클이나 MSSQL 과 달리
SQL 표준을 따르지 않는 구문이나 동작이 많습니다.
그냥 이럴땐 이렇게 동작하는구나 기억하고 넘어가시면 됩니다.
-- 이렇게 하면 뒤죽박죽 나옵니다. SELECT * FROM (SELECT @rownum := @rownum + 1 AS rnum , reg_dtm FROM text_book , (SELECT @rownum := 0 ) r ) a ORDER BY reg_dtm DESC ; -- 10.4 버전이면 분석함수 사용하세요. SELECT ROW_NUMBER() OVER(ORDER BY reg_dtm DESC) AS rnum , reg_dtm FROM text_book ;