복붙노트

[SQL] 조건의 경우와 업데이트의 MySQL

SQL

조건의 경우와 업데이트의 MySQL

내가 조건부 쿼리에 큰 문제가있는 것 같다.

나는 조건부 갱신을해야한다. 나는 내가하고 싶은 것이 여기에 쓰기 :

 IF(SELECT tipo FROM abbonamento WHERE idU = 17) = 'punti' THEN
     UDPATE abbonamento SET punti = punti - 1 
 ELSE
     UPDATE abbonamento SET bonus = bonus - 1

물론이 작동하지 않습니다. 어떤 생각?

해결법

  1. ==============================

    1.MySQL을 지원하는 문 IF.

    MySQL을 지원하는 문 IF.

    UPDATE  abbonamento
    SET     punti = IF(tipo = 'punti', punti - 1, punti),
            bonus = IF(tipo <> 'punti', bonus - 1, bonus)
    WHERE   id = 17
    

    또는 당신은 또한 CASE를 사용할 수 있습니다

    UPDATE  abbonamento
    SET     punti = CASE WHEN tipo = 'punti' THEN punti - 1 ELSE punti END,
            bonus = CASE WHEN tipo <> 'punti' THEN bonus - 1 ELSE bonus END
    WHERE   id = 17
    
  2. from https://stackoverflow.com/questions/15001217/update-mysql-with-if-condition by cc-by-sa and MIT license