sql >> Database teknologi >  >> RDS >> Oracle

Oracle Indsæt via Vælg fra flere tabeller, hvor én tabel muligvis ikke har en række

Outter joins virker ikke "som forventet" i det tilfælde, fordi du eksplicit har fortalt Oracle, at du kun vil have data, hvis kriterierne på den tabel matcher. I det scenarie bliver den ydre joinforbindelse ubrugelig.

En løsning

INSERT INTO account_type_standard 
  (account_type_Standard_id, tax_status_id, recipient_id) 
VALUES( 
  (SELECT account_type_standard_seq.nextval FROM DUAL),
  (SELECT tax_status_id FROM tax_status WHERE tax_status_code = ?), 
  (SELECT recipient_id FROM recipient WHERE recipient_code = ?)
)

[Rediger]Hvis du forventer flere rækker fra et undervalg, kan du tilføje ROWNUM=1 til hver where-sætning ELLER bruge en aggregering som f.eks. MAX eller MIN. Dette er selvfølgelig muligvis ikke den bedste løsning i alle tilfælde.

[Rediger] Per kommentar,

  (SELECT account_type_standard_seq.nextval FROM DUAL),

kan være lige

  account_type_standard_seq.nextval,


  1. dynamisk sql-forespørgsel i postgres

  2. Brug af PostgreSQL logisk replikering til at vedligeholde en altid opdateret læse-/skrive-TEST-server

  3. Konverter et månedsnavn til månedsnummeret i SQL Server (T-SQL)

  4. Sådan beskytter du din MySQL &MariaDB-database mod cyberangreb, når du er på et offentligt netværk