Что именно вы подразумеваете под «поменять [ping] значения LIVE
и NOT_LIVE
»? Если LIVE
это бит, который установлен / не установлен, то то, что вы ищете, это побитовое NAND. Например, если его значение равно 8 и вы хотите unset it
UPDATE table SET status = status &~ 8
Будет сброшен бит, значение которого равно 8. Если LIVE
и NOT_LIVE
- это два разных бита, то вам нужно установить один (ИЛИ) и сбросить другой (NAND). Здесь я уберу NOT_LIVE
(4) при настройке LIVE
(8)
UPDATE table SET status = (status &~ 4) | 8
Если status
может иметь только два значения , то вам нужно добавить эти два значения, а затем вычесть status
. Например, если два значения 1 и 2
UPDATE table SET status = (1 + 2) - status
который конечно можно написать
UPDATE table SET status = 3 - status
Обратите внимание, что произойдет сбой, если status
примет любое другое значение. Вы можете избежать этого, изменив status
, только если он один из двух.
UPDATE table SET status = 3 - status WHERE status IN (1, 2)
В этом случае, если status
не равно LIVE
или NOT_LIVE
, оно не будет изменено.