mysql update if else basic

52
6

Я пытаюсь получить обновление MySQL, которое должно быть очень простым, когда запрос выполняется, если значение равно 0, тогда оно будет установлено в 1, если оно равно 1, тогда оно будет установлено в 0.

update agents set manual_import = 0 if manual_import =1,set manual_import = 1 if manual_import = 1

Есть так много примеров, но какой из них самый простой?

спросил(а) 2015-03-24T13:25:00+03:00 5 лет назад
1
Решение
52

Хорошо, я понял, что это будет подходящим для моего собственного вопроса и любых других простых запросов.

UPDATE agents SET manual_import = CASE
WHEN manual_import = 1 THEN 0
WHEN manual_import = 0 THEN 1
END
WHERE a_id = $a_id

ответил(а) 2015-03-24T13:31:00+03:00 5 лет назад
52

Немного математики могут помочь:

UPDATE agents
SET manual_import = 1 - manual_import # turn 1 to 0 and 0 to 1
WHERE manual_import IN (0, 1) # but only when the value is 0 or 1

ответил(а) 2015-03-24T13:29:00+03:00 5 лет назад
38

Вы можете попробовать использовать случай, когда тогда

update agents set
manual_import = case when manual_import = 1 then 0 else 1
end

Я предположил, что manual_import имеет только два значения 0 и 1, и если у него больше 1 или 0, попробуйте это:

    UPDATE agents SET manual_import = case
when manual_import = 1 then 0
when manual_import = 0 then 1 else manual_import
END

ответил(а) 2015-03-24T13:34:00+03:00 5 лет назад
-4

В базе данных оракула самым удобным способом является функция "декодирования". Отвечая на этот вопрос, вы можете использовать "if" следующим образом:

update agents set manual_import = if(manual_import=1,0,1)

ответил(а) 2015-03-24T13:31:00+03:00 5 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема