sql >> Databáze >  >> RDS >> Oracle

Aktualizujte sloupec v tabulce pomocí náhodně vybraných jedinečných hodnot z jiné tabulky

Můžete to udělat vytvořením spouštěče pro vložení do tabulky1. Potom vyberete všechna ID adresy z tabulky2, která ještě nejsou nastavena v tabulce1, seřadíte je náhodně a vyberete jen první. Pracovní příklad takového spouštěče:

CREATE TRIGGER TRIGGER1 
BEFORE INSERT ON TABLE1 
FOR EACH ROW /* Trigger for each new row inserted into table1 */
BEGIN
SELECT addressId INTO :new.ADDRESSID /* Set AddressId for new row in table1 */ FROM 
(
   SELECT table2.addressId FROM table2
   LEFT JOIN table1 ON table1.CompanyNumber = table2.company AND table1.AddressID = table2.addressId
   WHERE table1.AddressID IS NULL /* Not already in table1 */ AND table2.Company = :new.COMPANYNUMBER /* Select all addressIds matching the company number */
   ORDER BY dbms_random.value /* order them randomly */
 ) hits
 WHERE ROWNUM = 1; /*Only pick the first randomly ordered one*/
    
EXCEPTION
  WHEN no_data_found THEN /* CompanyNumber not in table2 or no unique AddressId left */
     :new.ADDRESSID := NULL;
END;


  1. Duplicitní názvy sloupců v dotazu SQL

  2. Jak napsat funkci mysql s názvem dynamické tabulky?

  3. Jak spustit více aktualizačních dotazů v jednom příkazu v PHP a mySQL

  4. Proč je zde uveden dotaz „ZOBRAZIT UPOZORNĚNÍ“? (JPA/Hibernate/MySQL)