Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [SQL] Update con due where

    Mettiamo che io voglia fare queste due query

    str_sql = "UPDATE tabella SET valore = '2' WHERE id = 8"
    str_sql_2 = "UPDATE tabella SET valore = '4' WHERE id = 12"

    Non posso unire le due query un una sola? Sul mio host ho query limitate al database!

  2. #2

  3. #3
    Originariamente inviato da filippo.toso
    Cambia host.
    Non penso sia impossibile da fare ...
    E poi, anche se si hanno query illimitate, è sempre meglio farne il meno possibile per non sovraccaricare il db.

  4. #4
    si può fare abb. tranquillamente

    UPDATE tabella SET valore = IF(id = 8, '2', '4') WHERE id IN (8, 12)

    (non ricordo se è IF o IIF a dire la verità ma la sintassi dovrebbe andare)

    ovviamente se hai TROPPI elementi (sopra il centinaio) non so fino a che punto convenga perché avresti una query un pò confusa ...
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Originariamente inviato da daniele_dll
    si può fare abb. tranquillamente

    UPDATE tabella SET valore = IF(id = 8, '2', '4') WHERE id IN (8, 12)

    (non ricordo se è IF o IIF a dire la verità ma la sintassi dovrebbe andare)

    ovviamente se hai TROPPI elementi (sopra il centinaio) non so fino a che punto convenga perché avresti una query un pò confusa ...
    Favoloso! Funziona con IF.
    Non ho però capito la struttura logica: perchè devo porre nella condizione if id = 8?

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Puoi anche fare il contrario

    if (id=12, '4', '2')

  7. #7
    Originariamente inviato da !!\Freedom9/!!
    Favoloso! Funziona con IF.
    Non ho però capito la struttura logica: perchè devo porre nella condizione if id = 8?
    come ti ha detto luca puoi anche invertire ... perché il primo elemento è la condizione che se VERA (TRUE) restituisce il primo elemento altrimenti se FALSA (FALSE) restituisce il secondo elemento

    Puoi anche concatenare gli IF!

    se ad esempio ai bisogno di assegnare all'id 1 il valore 10, all'id 2 il valore 20 e all'id 3 il valore 30 puoi fare un IF del tipo

    UPDATE ... SET valore IF (id = 1, 10, IF(id = 2, 20, 30)) WHERE id IN (1, 2, 3);

    Ovviamente una query del genere è bene che sia generata dal software in modo da evitare possibili (e soprattutto strani problemi!)
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.