Sql 使用随机值作为连接条件
我正在生成一些测试数据并使用Sql 使用随机值作为连接条件,sql,oracle,join,random,Sql,Oracle,Join,Random,我正在生成一些测试数据并使用dbms\u random。在JOIN条件下使用dbms\u 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,
dbms\u random
。在JOIN
条件下使用dbms\u 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)) )
我错过了什么
编辑:
SELECT ROWNUM, FLOOR(dbms_random.VALUE (1, 4))
FROM dual CONNECT BY ROWNUM <= 3
选择ROWNUM,FLOOR(dbms_random.VALUE(1,4))
从dual CONNECT BY ROWNUM生成三行,其中一行为可预测值,另一行为随机值,请尝试以下操作:
SQL> with x as (
2 select rownum id from dual
3 connect by rownum <= 3
4 )
5 , y as (
6 select floor(dbms_random.value(1, 4)) floor_val
7 from dual
8 )
9 select x.id,
10 y.floor_val
11 from x
12 cross join y
13 /
ID FLOOR_VAL
---------- ----------
1 2
2 3
3 2
SQL
SQL>使用x作为(
2从“双”菜单中选择rownum id
3通过rownum连接谢谢,这可能会更容易,请参阅我的更新问题。我想知道为什么我的查询结果如此奇怪,但是…有什么想法吗?
SQL> with x as (
2 select rownum id from dual
3 connect by rownum <= 3
4 )
5 , y as (
6 select floor(dbms_random.value(1, 4)) floor_val
7 from dual
8 )
9 select x.id,
10 y.floor_val
11 from x
12 cross join y
13 /
ID FLOOR_VAL
---------- ----------
1 2
2 3
3 2
SQL