일부 테스트 데이터를 생성하고 dbms_random
을 사용 중입니다. 나는 JOIN
의 상태에 dbms_random
을 사용할 때 설명 할 수없는, 어떤 이상한 행동을 발견 :임의의 값을 조인 조건으로 사용
------------------------# test-data (ids 1 .. 3)
With x As (
Select Rownum id From dual
Connect By Rownum <= 3
)
------------------------# end of test-data
Select x.id,
x2.id id2
From x
Join x x2 On (x2.id = Floor(dbms_random.value(1, 4)))
Floor(dbms_random.value(1, 4))
가 (1,2,3)에서 임의의 숫자를 반환, 그래서 예상했을 것이다 x
의 모든 행은 x2
의 임의 행으로 결합되거나, 임의의 숫자가 한 번만 평가되는 경우에는 항상 x2
의 동일한 임의의 행이 될 수 있습니다.
여러 번, 그래도, 그런 결과를 얻기를 시도 할 때 :
(1) ID ID2 (2) ID ID2 (3)
---- ---- ---- ---- no rows selected.
1 2 1 3
1 3 2 3
2 2 3 3
2 3
3 2
3 3
나는 무엇을 놓치고?
편집 :
SELECT ROWNUM, FLOOR(dbms_random.VALUE (1, 4))
FROM dual CONNECT BY ROWNUM <= 3
이 경우에 결과를 얻을 것입니다, 그런데 왜 원래 쿼리가 그렇게 행동 하는가? 하나 개의 예측 값과 하나 개의 임의의 값으로 세 개의 행을 생성하는
감사합니다,이보다 쉽게 할 수있는, 내 업데이트 된 질문을 참조하십시오. 내 질문의 결과가 왜 그렇게 이상한 지 궁금 해서요 ... 어떤 생각? –