안녕하세요.. 쿼리 질문이 있습니다. 저는 가상 테이블을 DUAL 을 사용하여 특정 데이터를 찾고 있습니다.
밑에 있는 쿼리를 한번보세요
WITH m2 AS
(
SELECT *
FROM ( SELECT 1 AS NUM FROM DUAL UNION ALL
SELECT 2 AS NUM FROM DUAL UNION ALL
SELECT 4 AS NUM FROM DUAL UNION ALL
SELECT 7 AS NUM FROM DUAL
)
)
(
select m2.num as no
from table m1
right Outer join (select level num from dual connect by LEVEl <=7) m2 on m2.num =m1.num
where m1.num is null
order by no CONNECT BY LEVEl
저는 위의 쿼리를 통해 1~7 사이중 3,5,6 을 찾기 위해 위와 같은 쿼리를 실행하고 있습니다.
3,5,6의 검색 결과를 얻기 위해서는 빨간색중 어딘가를 보충하거나 수정 해야 합니다.
어디를 수정해야하나요?? 부탁드리겠습니다...위의 쿼리중 잘못된 곳을 고쳐서 가르쳐주세요.
3,5,6의 결과를 얻고 싶습니다... right outer join을 사용해서 말이지요...
Comment 6
-
말자말자
2015.07.02 08:55
지금쿼리는..잘못된 부분이 있어서 실행이 안되는데 혹시 어느부분을 수정해야하는지 아시는지요??
-
철스
2015.07.02 09:30
SELECT A.NUMBER
FROM 전체숫자테이블 AS A
LEFT JOIN M2 AS B ON A.NUMBER = B.NUM
WHERE A.NUMBER <= 7
AND B.NUM IS NULL -
말자말자
2015.07.02 10:51
죄송한데 혹시 위의 제쿼리 중에..어느부분이 잘못된지 아시는지요..??괄호 잘못인지..뭔지는 모르겠지만...
그리고 가상테이블 사용해야해서..WITH도 사용을 해야하거든요..제쿼리중에 어느부분이 틀렸는지 아십니까~~??
-
유스
2015.07.02 13:16
숙제 같아 보이는 이 기분은 뭘까요...
-
SQL초짜of초짜
2015.07.02 14:37
잘 비교해보세요..^^WITH m1 AS(SELECT *FROM ( SELECT 1 AS NUM FROM DUAL UNION ALLSELECT 2 AS NUM FROM DUAL UNION ALLSELECT 4 AS NUM FROM DUAL UNION ALLSELECT 7 AS NUM FROM DUAL))select m2.num as nofrom m1right Outer join (select level num from dual connect by LEVEl <=7) m2 on m2.num =m1.numwhere m1.num is nullorder by no
DUAL 나오고 하는거 보니까 오라클인가요??
빠진 날짜, 빠진 월, 빠진 숫자....
이런 쿼리엔 전체 데이터를 가지고 있는 테이블을 하나 만들어 두면 아주 편하죠.
100년짜리 달력 테이블, 21억까지 들어있는 숫자 테이블...
그리고 OUTER JOIN