2 min readJun 24, 2021
[PPAS(PostgreSQL)] FROM 절 내의 subquery alias 오류.(feat, PPAS, PostgreSQL 차이)
PostgreSQL 을 사용하다 보면
이런 오류(FROM 절 내의 subquery 에는 반드시 alias를 가져야만 합니다.)가 발생할 때가 있다.
[예제 쿼리]
SELECT A
FROM (
SELECT A, ROWNUM RN
FROM TABLE
WHERE COLUMN = 'aaa'
)
WHERE RN <= 200
PostgreSQL 에서는 FROM 절 서브쿼리에 alias 를 필히 사용해야한다.
또한 예제 소스에는 또다른 문제가 존재한다.
ROWNUM 은 PostgreSQL에서 제공하는 기능이 아니다. 그러므로 아래와 같이 수정이 필요하다. 위의 예제 쿼리는 오라클 DB쿼리이다.
SELECT A
FROM (
SELECT A, (ROW_NUMBER() OVER()) AS RN
FROM TABLE
WHERE COLUMN = 'aaa'
)
LIMIT 200
이 글을 쓰는 이유는, 기존에 PPAS와 PostgreSQL 이 동일하다고 생각했었고, PPAS 가 오라클 기반의 DB와 호환이 된다고 하여, PostgreSQL 다운 받아 해당 쿼리를 실행했었는데, 해당 이슈가 발생하였다.
처음에는 PostgreSQL의 설정이나 세팅 문제 일거라 생각했지만, 몇일동안 여러 커뮤니티를 찾아본 결과 잘못된 생각이었다.
PPAS는 Postgres Plus Advanced Server의 약자로 PostgreSQL 기반의 상용 버전이다. PostgreSQL 커뮤니티 버전에서 제공하지 않는 기능(오라클 호환)을 제공하며, 유료이다. PPAS 를 설치하여 수정전 쿼리를 실행한 결과 문제없이 결과가 나온다.
PPAS와 PostgreSQL 혼동하지 않고 사용하자. PPAS를 사용할 것이 아니라면 오라클 DB의 쿼리들을 전부 수정해야할 것이다.