Vissa versioner av Structured Query Language ( SQL ) som Oracle tillåta användning av uppdateringar uttalanden med en vald uppsättning värden inom en sub fråga . En uppdatering uttalande skapas på detta sätt utnyttjar generellt en sub fråga som innehåller värden från en annan tabell . De värden som returneras från sub välja slutföra förutsättning för uppdaterings uttalanden . Annorlunda uttryckt , grundar en uppdatering uttalande dess uppdatering skick på värden valda från en annan tabell i ett enda steg , snarare än två steg . Instruktioner
1
Skapa den första delen av meddelandet att uppdatera kolumnerna . Den första delen av ett uttalande i detta fall är att uppdatera en specifik tabell namn tilldela lämpliga värden för kolumner som så :
UPDATE
SET ( , < column_name > ) =
Ersätt med namnet på ditt bord att uppdatera , och ( eller namn ) till lämplig kolumn ( er ) som ska uppdateras . Denna metod fungerar för enstaka eller flera kolumnvärdena . . Värdena kommer att tilldelas i nästa steg med en väljer
Därför skulle ett typiskt exempel från verkliga livet vara :
Update kund SET ( account_no , invoice_amt ) =
2
Lägg den andra delen av meddelandet med hjälp av en sub - select . Den sub - select i detta fall kommer att leta efter värden för att uppdatera relaterade till huvudfrågan . Ett exempel på detta är följande :
(SELECT FROM VAR ) katalog De nya värdena < . , tillstånd > och ange SQL villkoret att genomföra och värdet ( er ) som ska tilldelas i sub - query
Ett verkligt exempel på uttalandet hittills är : .
Uppdatera kund SET ( account_no , invoice_amt ) = ( SELECT accountno , invoicecost FROM försäljning där purchaseorder = 123456 ) .
tilldelar kontonummer och fakturabelopp till kontonummer , fakturabelopp i kundens tabellen till samma värden som finns i tabellen Sales för inköpsorder 123456 .
3
slutföra uppdateringen uttalande . Detta steg anger de slutliga ett viktigt kriterium för att uppdatera kunden tabellen för rätt kund , annars alla kunder i tabellen oavsiktligt skulle uppdateras
Uttalandet ska sluta med : .
VAR < ; column_name > ; .
kolumnnamnet anger fältet att basera uppdatering på , tillståndet för de kriterier och värdet att jämföra för uppdateringen uppdraget
I verkliga termer , kan vårt exempel nu utökas till :
Update kund SET ( account_no , invoice_amt ) = ( SELECT accountno , invoicecost FROM försäljning där purchaseorder = 123456 ) WHERE customer_no = 457.645
som angetts , tilldelar detta kontonummer och fakturabelopp till kontonummer , fakturabelopp i kundens tabellen till samma värden som finns i tabellen Sales för inköpsorder 123456 . Slutligen anger kundnumret i kundens tabellen att denna fråga endast bör gälla kundnummer 457.645 .