728x90
반응형
SMALL

SQL 4

[SQL] ORDER BY Ties: 하나의 데이터가 여러 Page에 조회되는 이유

제가 아는 tie 는 넥타이 뿐입니다.라고 하실 분들을 위해(저도 포함입니다), 용어부터 짚고 넘어가보겠습니다.# 영어에서, tie = 묶다 / 연결하다 / 동점 => 스포츠 경기 동점되면, “The game is tied” 라고 표현# DB에서, ORDER BY tie = 정렬 기준 같은 row 존재 => “ORDER BY tie 발생했다" 라고 표현# tie-breaker = 동점을 깨는 기준 데이터 조회 쿼리에서 페이지네이션을 구현할 때 마주친 ORDER BY Ties 버그를 소개합니다.실제로는 1개의 행만 존재하는데, 1페이지와 2페이지에 동일한 데이터가 나타나는 현상을 겪었고, 그 원인과 해결 방법을 정리했습니다.문제 유형: 데이터베이스 — LIMIT/OFFSET 페이지네이션 불안정성문제: 1..

IT/DB 2026.03.30

[Oracle] 행 제한 구문 활용 페이징 처리 SQL 쿼리

행 제한특정 조건에 따라 행 개수를 제한하기 위해 사용하는 SQLSELECT *FROM USER_MST UMWHERE 1=1ORDER BY UM.USER_ID ASC NULLS LASTOFFSET {스킵할 건수} ROWSFETCH FIRST {보여줄 건수} ROWS ONLY;  예제하나의 페이지에 5개의 행을 나타낼 수 있고3번째 페이지인, 11~15번째 행을 조회하고 싶다면?SELECT *FROM USER_MST UMWHERE 1=1ORDER BY UM.USER_ID ASC NULLS LASTOFFSET 10 ROWSFETCH FIRST 5 ROWS ONLY;  파라미터로 페이징 처리pageNum = 3fetchNum = 5SELECT *FROM USER_MST UMWHERE 1=1ORDER BY UM..

IT/DB 2024.08.07

[SQL] ORA-00955: 기존의 객체가 이름을 사용하고 있습니다.

DB툴인 Orange에서 다음의 에러가 발생했다. "ORA-00955: 기존의 객체가 이름을 사용하고 있습니다"     원인 :수동 커밋 설정에서CREATE TABLE 명렁어 실행 이후,Rollback Session 실행했더니 SELECT 도 안먹히고다시 CREATE TABLE 날려도 안먹히면서 위 에러가 발생.    PostgreSQL 에서는 DDL 문까지 롤백가능하지만오라클에서는 DDL 수행시 내부적으로 자동 COMMIT 을 수행 결국, Rollback 했더라도 테이블이 삭제되지 않은 상황.        해결 : DROP TABLE 테이블명; 테이블 드롭 후 재생성

IT/DB 2024.07.29

[SQL] Postgresql에서 Oracle의 Merge into~ 구문 사용하기

오라클에서의 Merge into~ 구문처럼insert를 하고싶은데 이미 데이터가 있으면 update를 해야되는즉, insert와 update를 동시에 실행시켜야 하는 니즈가 생기기 마련  그러나 postgresql 에서는? Oracle의 Merge into~ 구문을 사용할 수 없다.대신 다른 방법이 존재한다. 원리는 간단하다.임시 테이블 + Returning * 구문을 활용하면 끝.심지어 insert/delete/update/select 원하는 순서로 동시 실행 가능하다.ex) 쿼리 한개로 ABC를 select를 하고 C를 delete하고 B만 update할 수가 있다 예시 쿼리1은 다음과 같다.sesert에서 특정 데이터 선택하고upsert에서 선택된 데이터만 특정컬럼 업데이트해주고 (Returning..

IT/DB 2024.06.27
728x90
반응형
LIST