본문 바로가기
반응형

TechNical/Oracle45

distinct 때메 생긴 그지같은 오라클 쿼리 에러 -_- select 절에 컬럼 하나를 더 가져오게 변경을 했다. 그랬더니 이런 에러가 뜬다... ORA-01791: SELECT 식이 부적합합니다 .... 어쩌라고 -_- 참 난감하고도 난감한 에러다. 조회 컬럼을 distinct를 제외하고 * 로 바꾸니까 order by 절에 태클을 건다.. 음.. 근데 이상하군. 테이블의 컬럼이 아닌 별칭을 걸어 논 것이 었다.. 그렇군. 각설하고 결론은 distinct를 사용 했을 경우 order by 절에 기술된 컬럼이 select 절에 나와야 한다는 것이더라. 만약에 별칭을 사용 했다면 그 별칭을 order by 절에 써 주면 된다. 끝!!! .. 야심한 밤에 이게 뭔 짓이야.. 아.. 슬프다 -_- 2010. 8. 27.
GROUP BY 절에 DECODE로 된걸 SELECT 절에서 스칼라로 써 먹을 순 없나? group by 에 decode로 들어 간걸 select 절에서 스칼라 쿼리로 써 먹을 수 음나? 라는 문제에 봉착하게 됐다.. 말이 상당히 난해하다. 예제를 보도록 하자. WITH tb1 AS ( SELECT 'A' AS c1 , '1' AS c2 FROM DUAL UNION ALL SELECT 'A' AS c1 , '1' AS c2 FROM DUAL UNION ALL SELECT 'B' AS c1 , '1' AS c2 FROM DUAL UNION ALL SELECT 'C' AS c1 , '1' AS c2 FROM DUAL ), tb2 AS ( SELECT 'A' AS c1 , '곰' AS c2 FROM DUAL UNION ALL SELECT 'B' AS c1 , '개' AS c2 FROM DUAL U.. 2010. 4. 29.
LEFT OUTER JOIN 성능. 꼭 필요할 떄만 쓰자~ LEFT OUTER JOIN을 동일한 테이블을 조건만 다르게 해서 여러게 붙여 놓은 쿼리가 있었다. 속도가 겁니 느려서 분산된 LEFT OUTER JOIN 을 하나로 빼고 해당 테이블에서 다른 조건들은 SELECT 문에서 DECODE나 CASE문으로 빼니까 성능이 좋아진 경우가 있었다. 플렌을 떴을 경우 별 차이는 없었지만 실제 실행 속도는 차이가 많았다. 이에 따라 LEFT OUTER JOIN 의 성능이 어떤가 하고 찾아보니 아래와 같은 TIP을 발견 했다. If you have a query that uses a LEFT OUTER JOIN, check it carefully to be sure that is the type of join you really want to use. As you may.. 2010. 3. 17.
WITH 문에서 테이블을 두개 맹글어 보자. 원래 WITH문 이게 메인이 아닌데.. GROUP BY에 대한 고찰이었음.. =ㅅ= 마땅한 제목이 없어서. ㅋㅋㅋㅋㅋ 1. 테스트 테이블 생성 WITH tb1 AS ( select 'A' as k1 , 1 as qty from dual union all select 'B', 2 from dual union all select 'B', 3 from dual union all select 'C', 1 from dual ), tb2 AS ( select 'A' as b1 , '나무' as b2 from dual union all select 'B', '문어바' from dual union all select 'B', '꼬라바' from dual union all select 'C', '거북이' from dua.. 2009. 3. 13.
반응형