oracle 将表A中的不同随机行添加到表B中的每一行

wmomyfyw  于 2023-08-04  发布在  Oracle
关注(0)|答案(1)|浏览(172)

我有两个表,一个名为A,另一个名为B,我想从表A中随机添加一个不同的行到表B的每一行。表之间没有cummon字段。“
我竭力做到:

select idA,idB

from A,(select idB

        from B

        Order by dbms_random.random

        fetch first 1 row only)

字符串
但是,select在'from'中只执行过一次。因此,我从表B中得到了相同的行,而表A中的所有行都是相同的行。

  • 谢谢-谢谢
zrfyljdw

zrfyljdw1#

可以使用横向连接。通过dbms_random.random函数猜测您正在使用Oracle数据库。
在Oracle中,您可以执行以下操作:

select A.idA, x.idB
from A,
lateral (
  select idB
  from B
  Order by dbms_random.random + A.idA * 0
  fetch first 1 row only
) x

字符串

注意:要对每一行运行横向连接,需要从它到主表产生一个“依赖”。在这种情况下,我们可以通过添加+ A.idA * 0来欺骗Oracle;这没有任何副作用,除了Oracle认为横向行依赖于主行。

请参阅running example

相关问题