티스토리 뷰
SET @rownum:=0;
SELECT
@rownum:=@rownum + 1 as rNum,
t1.*
FROM
TABLE_NAME t1
;
하이디 sql 등 db 툴에서 쿼리만 실행할때 rNum이 잘 안나올 수 있다. NULL이나 1번부터 시작이 아닌..
왜그런가 봤더니 세미콜론으로 2개의 쿼리가 있어서 그랬다.
프로그램에서 mybatis 안에 쿼리가 있을때는 한번에 실행이 되겠지만 하이디sql 등에서 세미콜론에 있는 쿼리만 실행하는 (현재 쿼리 실행) ctrl + shift + F9 를 누르면 잘 안될 수 있다.
SET 부분이 실행이 안되고 SELECT에 커서를 두고 실행한 경우..
그래서 SET 부분도 같이 실행이 되야 하니 그냥 실행 F9를 눌러서 하면 잘 된다.
그리고 join 및 정렬 ORDER BY 등이 있으면 rownum이 순서대로 잘 안된다. join 및 정렬을 다 하고 다시 rownum을 부여해야 하니 select를 2번 써줘야 한다.
=====================================
위와 같은 방법으로 정렬 해도 rownum이 잘 나올 줄 알았는데 잘 나오지 않았다.
마리아 db는 서브쿼리 결과를 메모리에 적재하지 안하서 안된다고 한다.
https://mariadb.com/kb/en/mariadb/why-is-order-by-in-a-from-subquery-ignored/
Why is ORDER BY in a FROM Subquery Ignored?
Query with ORDER BY in a FROM subquery produces an unordered result.
mariadb.com
이를 해결하기 위해서는 ORDER BY 밑에 LIMIT 를 넣어 주니 잘 되었다.
SELECT @rownum:=@rownum+1 as num, x.*
FROM (SELECT col1, col2
FROM TABLE1
ORDER BY col2
LIMIT 18446744073709551615
) X,
(SELECT @rownum:=0) r
'mariaDB' 카테고리의 다른 글
마리아 db sql import (0) | 2023.05.11 |
---|---|
마리아 db 하이디 실행계획. 화면 쿼리가 느릴때 (0) | 2023.03.30 |
마리아 db 사용자 생성 (0) | 2023.01.10 |
마리아 db 같지 않음 null 처리 (0) | 2022.12.13 |
마리아db 컬럼 중간에 추가하기 (0) | 2022.11.23 |
- Total
- Today
- Yesterday
- 인포믹스
- proc
- 오라클
- 자바
- 플러터
- 포인터
- esql
- C
- ocjap
- 파이썬
- xe애드온
- 스크래핑
- MySQL
- KG
- XE
- xe addon
- 파싱
- 자바 smtp
- 문자열
- C언어
- Python
- EC
- webix
- 프로씨
- 이클립스
- XE3
- ocajp
- JDBC
- 라이믹스 모듈
- php
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |