Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mettre à jour la colonne à l'aide de valeurs uniques aléatoires d'une table différente

Hummm. . . Vous pouvez utiliser une jointure latérale si vous voulez un arbitraire adresse plutôt qu'un aléatoire adresse :

select t1.*, t2.*
from table1 t1 left join lateral
     (select t2.*
      from table2 t2
      where t2.company_number = t1.company_number and rownum = 1
     ) t2
     on 1=1;

Si vous voulez réellement une adresse aléatoire identique pour chaque numéro d'entreprise, vous pouvez utiliser :

select t1.*, t2.*
from table1 t1 left join lateral
     (select t2.*,
             row_number() over (partition by company_number order by dbms_random.random) as seqnum
      from table2 t2
     ) t2
     on t2.company_number = t1.company_number and
        seqnum = 1;

ici est un db<>violon illustrant que la syntaxe fonctionne.