2013-06-23 17 views
21

Sto provando ad aggiornare i valori da una tabella ma ho bisogno di aggiungere alcune condizioni. Ho trovato la funzione CASE ma non lo sono se è il metodo migliore. Ecco un esempio:AGGIORNATO condizionato in MySql

Il mio tavolo è per esempio 'relazione'

 
userid1|userid2|name1|name2 

ho preso ad esempio:

SELECT * 
    FROM realtion 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 

uscita:

  
4|3|bill|jack 

e voglio cambia il nome dell'utente 3 nella relazione tra 3 e 4 ma non so se è userid1 o userid2.

ho pensato di caso

UPDATE relation 
    CASE WHEN userid1 = 3 THEN SET name1 = 'jack' END 
     WHEN userid2 = 3 THEN SET name2 = 'jack' END 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 

Ma non funziona! Qualche idea? Grazie mille in anticipo.

risposta

34

Purtroppo non è molto chiaro quello che si vuole ottenere, alla fine, ma ecco come si potrebbe usare correttamente condizionale SET nel vostro UPDATE

UPDATE relation 
    SET name1 = CASE WHEN userid1 = 3 THEN 'jack' ELSE name1 END, 
     name2 = CASE WHEN userid2 = 3 THEN 'jack' ELSE name2 END 
WHERE (userid1 = 3 AND userid2 = 4) 
    OR (userid1 = 4 AND userid2 = 3); 

Ecco SQLFiddle demo.

+0

Grazie per il tuo aiuto, lo sto testando proprio ora, ti tengo in contatto. PS: ho visto il tuo miglioramento nella formulazione, terrò questo a mente per ulteriori post –

+0

Grazie mille. Funziona. –

+0

@PierreLebon Siete i benvenuti :) – peterm