La mia dichiarazione UPDATE va lungo le linee di:SQL - Aggiornamento con un'istruzione CASE, devo ripetere lo stesso CASE più volte?
UPDATE customer
SET forenames=ot.forenames,
surname =
CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,
middlename =
CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,
FROM order_transaction ot
WHERE customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
Le opere di cui sopra. In pratica controlla se un campo in un'altra tabella è NULL o no, e quindi aggiorna il "cognome" del cliente e il "nome-chiave" di conseguenza. Come puoi vedere sopra, ho ripetuto la stessa dichiarazione CASE due volte. La mia domanda è - esiste un modo per specificare una volta l'istruzione CASE?
Il punto è che, se dico di voler aggiornare 10 campi in base a una determinata condizione, devo includere 10 condizioni CASE simili? Oppure il SQL può essere migliorato per avere un solo CASE e 10 aggiornamenti sul campo all'interno delle clausole WHEN/ELSE?
(Sto utilizzando un database Postgresql 8.2 ma credo che quanto sopra sia standard SQL).
Molte grazie, Rishi
Non proprio la soluzione migliore Richard.Come prima selezioni, esplora la tabella e aggiunge il risultato e successivamente lo filtra. –
@Dumitrescu Bogdan/Non credo che lo faccia. Poiché PostgreSQL srotolerà la query per applicare i filtri nella sottoquery, ma conserverà comunque la possibilità di utilizzare la colonna definita (calcolata) – RichardTheKiwi
La sintassi dell'OP non è SQL standard (si noti inoltre che lo standard SQL è internazionale e la "A" in "ANSI" sta per "americano", quindi "SQL conforme all'ISO" sarebbe più appropriato qui :) – onedaywhen