Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zaktualizuj kolumnę przy użyciu losowych unikalnych wartości z innej tabeli

Hmmmm. . . Możesz użyć sprzężenia bocznego, jeśli chcesz dowolnego adres, a nie losowy adres:

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;

Jeśli rzeczywiście chcesz losowy adres, który jest taki sam dla każdego numeru firmy, możesz użyć:

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;

Tu to db<>skrzypce ilustrujące, że składnia działa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Testowanie jednostkowe dla PL/SQL

  2. Sesja serwera ORACLE zakończona z powodu błędu krytycznego

  3. Funkcja NLS_UPPER() w Oracle

  4. VS2010 + sterownik Oracle:ORA-12154:TSN:nie można rozpoznać określonego identyfikatora połączenia

  5. Jak załadować dużą liczbę ciągów, aby dopasować je do bazy danych Oracle?