Как использовать оператор if в MySQL - PullRequest
0 голосов
/ 22 сентября 2018

я хочу получить минус 1 (-1) значение от durasi_pre_u, если durasi_pre_u имеет базовое значение больше 0, и обновить Premium до Member, если durasi_pre_u имеет значение = 0.

вот что я пытаюсь

UPDATE user 
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u), 
pangkat_u = IF(durasi_pre_u <> 1 AND pangkat_u = 'Premium', pangkat_u = 'Member', pangkat_u)

этот код работает -1 durasi_pre_u но не работает изменить Premium на Member

я пытаюсь следовать учебнику с этого сайта https://www.w3resource.com/mysql/control-flow-functions/if-function.php

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

У вас есть ошибка в вашем запросе, во-первых, вы хотите изменить значение pangkat_u, только если текущее значение durasi_pre_u равно 1 (поэтому оно собирается измениться на 0), поэтому вам нужно изменить *От 1003 * до =.Во-вторых, у вас есть pangkat_u = 'Member' в качестве нового значения, которое MySQL рассматривает как логическое выражение (то есть значение 1 или 0).То, что вы действительно хотите, это просто 'Member'.Поэтому ваш запрос должен быть:

UPDATE user 
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u), 
pangkat_u = IF(durasi_pre_u = 1 AND pangkat_u = 'Premium', 'Member', pangkat_u)
0 голосов
/ 22 сентября 2018

В функции If вам нужно только указать значения, которые будут установлены в случае true или false.Не указывайте имя поля = значение (pangkat_u = 'Member')

Используйте следующее:

UPDATE user 
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u), 
pangkat_u = IF(durasi_pre_u <> 1 AND pangkat_u = 'Premium', 'Member', pangkat_u)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...