1부터 5까지 출력쿼리
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 5;
SELECT ROWNUM FROM DUAL CONNECT BY LEVEL <= 5;
출력
1
2
3
4
5
10부터 15까지 출력쿼리
SELECT LEVEL+9 FROM DUAL CONNECT BY LEVEL+9 < 16;
SELECT ROWNUM+9 FROM DUAL CONNECT BY LEVEL+9 < 16;
출력
10
11
12
13
14
15
20060101일부터 20060105일까지 출력쿼리
SELECT TO_DATE('20060101', 'YYYYMMDD') + LEVEL - 1 FROM DUAL
CONNECT BY LEVEL <= 10;
출력
2006-01-01
2006-01-02
2006-01-03
2006-01-04
2006-01-05
2003년부터 2007년까지 출력쿼리
SELECT TO_CHAR(TO_CHAR(sysdate,'yyyy') -5 + ROWNUM) yyyy FROM dual
CONNECT BY LEVEL <= 5;
출력
2003
2004
2005
2006
2007
※ MySQL에서는 Connect By와 같은 효과를 낼수 없다.(꼬진 DBMS)
10개의 로우가 있는 테이블에 컬럼(NAME)을 추가하고 1부터 10을 넣는 방법
UPDATE 테이블 SET NAME = (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 10);
1000~9999까지의 숫자중에 4개의 숫자합이 7이 되는 수는 몇개인지 체크하는 쿼리
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 5;
SELECT ROWNUM FROM DUAL CONNECT BY LEVEL <= 5;
출력
1
2
3
4
5
10부터 15까지 출력쿼리
SELECT LEVEL+9 FROM DUAL CONNECT BY LEVEL+9 < 16;
SELECT ROWNUM+9 FROM DUAL CONNECT BY LEVEL+9 < 16;
출력
10
11
12
13
14
15
20060101일부터 20060105일까지 출력쿼리
SELECT TO_DATE('20060101', 'YYYYMMDD') + LEVEL - 1 FROM DUAL
CONNECT BY LEVEL <= 10;
출력
2006-01-01
2006-01-02
2006-01-03
2006-01-04
2006-01-05
2003년부터 2007년까지 출력쿼리
SELECT TO_CHAR(TO_CHAR(sysdate,'yyyy') -5 + ROWNUM) yyyy FROM dual
CONNECT BY LEVEL <= 5;
출력
2003
2004
2005
2006
2007
※ MySQL에서는 Connect By와 같은 효과를 낼수 없다.(꼬진 DBMS)
10개의 로우가 있는 테이블에 컬럼(NAME)을 추가하고 1부터 10을 넣는 방법
UPDATE 테이블 SET NAME = (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 10);
1000~9999까지의 숫자중에 4개의 숫자합이 7이 되는 수는 몇개인지 체크하는 쿼리
select count(1) from (
select * from
(
select
num,
trunc(num/1000) as first,
trunc(mod(num,1000)/100) as second,
trunc(mod(num,100)/10) as third,
mod(num,10) as forth
from (
select 999+rownum as num from dual connect by level+999<10000
)
) where first+second+third+forth = 7
or first+second+third+forth in (07, 16, 25, 34, 43, 52, 61, 70)
-- 4자리 수의 총합이 두자리인 경우는 다시 더한다고 가정
);
테이블에 테스트 데이타 쉽게 넣기
select level,dbms_random.string('A',20)
from dual
connect by level < 1000; <- 1000이라는 수치만 변경하면 됨
또는
INSERT INTO test (a,b)
SELECT NVL(a, 0) + level as a, 'aaa' || to_char(NVL(a, 0) + level) as b
FROM (SELECT MAX(a) as a FROM test)
CONNECT BY LEVEL <= 10; <- 10이라는 수치만 변경하면 됨
select * from
(
select
num,
trunc(num/1000) as first,
trunc(mod(num,1000)/100) as second,
trunc(mod(num,100)/10) as third,
mod(num,10) as forth
from (
select 999+rownum as num from dual connect by level+999<10000
)
) where first+second+third+forth = 7
or first+second+third+forth in (07, 16, 25, 34, 43, 52, 61, 70)
-- 4자리 수의 총합이 두자리인 경우는 다시 더한다고 가정
);
테이블에 테스트 데이타 쉽게 넣기
select level,dbms_random.string('A',20)
from dual
connect by level < 1000; <- 1000이라는 수치만 변경하면 됨
또는
INSERT INTO test (a,b)
SELECT NVL(a, 0) + level as a, 'aaa' || to_char(NVL(a, 0) + level) as b
FROM (SELECT MAX(a) as a FROM test)
CONNECT BY LEVEL <= 10; <- 10이라는 수치만 변경하면 됨
댓글 없음:
댓글 쓰기