Il mio problema è circa la sintassi SQL del costrutto REPLACE.
Come posso aggiungere una clausola limitante (tipo WHERE o HAVING per select)?
Printable View
Il mio problema è circa la sintassi SQL del costrutto REPLACE.
Come posso aggiungere una clausola limitante (tipo WHERE o HAVING per select)?
Per modificare dei record già presenti, non devi usare REPLACE ma UPDATE:REPLACE serve a questo: ti permette di fare un inserimento-sostituzione con una sola query. Se specifichi infatti una chiave già presente, i valori associati vengono sostituiti, in caso contrario viene aggiunto il record...Codice:UPDATE NomeTabella
SET Campo1 = NuovoValore1, Campo2 = NuovoValore2, ...
WHERE ... (condizioni di selezione)
Stammi bene...
Non esattamente... considera la REPLACE come una "scorciatoia" per queste tre query (in realtà sono due quelle eseguite):Queste due/tre query le puoi fare in un sol colpo con una REPLACE:Codice:--- prima query
SELECT * FROM NomeTabella WHERE Id = TestingId
--- se la query non ha risultati, puoi inserire il record con il nuovo Id
INSERT INTO NomeTabella (Id, AltriCampi) VALUES (TestingId, AltriValori)
--- se la query ha risultati, esegui l'aggiornamento
UPDATE NomeTabella SET AltriCampi = AltriValori WHERE Id = TestingId
Inoltre, dato che la sintassi di REPLACE è la stessa di INSERT, puoi fare questo test più volte con una sola query:Codice:REPLACE INTO NomeTabella (Id, AltriCampi) VALUES (TestingId, AltriValori)
In questo caso, il test sopra viene fatto per ogni TestingId specificato: se risulta già presente, i valori di AltriCampi saranno reimpostati su AltriValori. In caso contrario, il record viene inserito con TestingId e AltriValori specificati, e gli altri campi specificati sui valori di default (o NULL se non è definito un default).Codice:REPLACE INTO NomeTabella (Id, AltriCampi) VALUES
(TestingId1, AltriValori1),
(TestingId2, AltriValori2),
...
(TestingIdN, AltriValoriN)
Spero di averti risposto... stammi bene...