sql >> Database >  >> RDS >> Mysql

MYSQL UPDATE SET op dezelfde kolom maar met meerdere WHERE-clausules

Iets als dit zou voor u moeten werken:

UPDATE CustomerDetails_COPY
    SET Category_ID = CASE Category_ID
        WHEN 2 THEN 10 
        WHEN 3 THEN 9
        WHEN 4 THEN 12
        WHEN 5 THEN 11
    END
WHERE Category_ID IN (2,3,4,5)

Als alternatief kunt u, zoals Simon suggereerde, dit doen om te voorkomen dat u de waarden tweemaal invoert:

UPDATE CustomerDetails_COPY
    SET Category_ID = CASE Category_ID
        WHEN 2 THEN 10 
        WHEN 3 THEN 9
        WHEN 4 THEN 12
        WHEN 5 THEN 11
        ELSE Category_ID
    END

Bron:http://www.karlrixon.co.uk/writing/update-multiple-rows-with-different-values-and-a-single-sql-query/



  1. Sjabloonpatronen en -modificaties voor datum-/tijdopmaak in PostgreSQL

  2. hoe gebruikersrechten te verlenen voor een specifiek schema?

  3. Hoe jaar en maand uit de datum halen in PostgreSQL zonder de functie to_char() te gebruiken?

  4. PL/SQL ORA-01422:exact ophalen levert meer op dan het gevraagde aantal rijen