Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 안드로이드 스튜디오
- Tomcat
- Linux
- 스레드 덤프
- integer
- Database
- 영상편집
- letterspacing
- MariaDB
- 프로세스
- 톰캣
- START WITH
- MySQL
- oracle
- cmd
- java
- 티스토리챌린지
- 오블완
- 삼성증권
- ibatis
- 컨트롤러
- JDBC
- API
- 키보드
- HTML
- 스레드
- wsdl
- equals
- http
- Docker
Archives
- Today
- Total
블로그 이름
[MariaDB] ORACLE의 STARTWITH절을 MariaDB에서 사용 본문
Oracle 에서 사용하는 START WITH 절 쿼리를 MariaDB로 작성해야 하는 일이 있었다.
MariaDB는 CONNECT BY가 없어서 ORACLE의 쿼리를 그대로 사용할 수 없다.
오라클 쿼리 예시
SELECT id, parent_id, name
FROM depts
START WITH parent_id IS NULL
CONNECT BY PRIOR id = parent_id
ORDER SIBLINGS BY name;
해당 쿼리를 MariaDB 쿼리로 변경 시 아래와 같다.
WITH RECURSIVE cte AS (
SELECT id, parent_id, name, 0 AS level
FROM DEPTS
WHERE parent_id IS NULL
UNION ALL
SELECT t.id, t.parent_id, t.name, cte.level + 1 AS level
FROM DEPTS t INNER JOIN cte ON t.parent_id = cte.id
)
SELECT id, parent_id, name, level
FROM cte
ORDER BY level
WITH RECURSIVE로 재귀 사용, level로 계층 깊이를 관리하면 된다. (oracle의 경우 ㅁ조회 순서대로 자동 정렬되지만 maraidb의 경우 정렬이 풀려버리기 때문에 level을 사용하여 순서를 유지하여야함)
오늘은 ORACLE의 START WITH 절을 MARIADB로 포팅하는 방법을 알아보았다.
'개발 > Database' 카테고리의 다른 글
| [DB] Java Ibatis에서 ORACLE과 MARIADB 트랜잭션 사용 시 차이 (0) | 2025.05.29 |
|---|---|
| [MariaDB] last_insert_id() 사용 시 주의점 (0) | 2025.05.29 |
| [ORACLE] 계층형 쿼리 사용법 (0) | 2025.04.28 |
| [ORACLE] Base64 인코딩/디코딩 내장함수 사용법 (0) | 2025.03.19 |
| [ORACLE] 오라클 문자열에서 정규식 사용하여 한글만 추출 (5) | 2025.03.19 |