Я пытаюсь изменить следующую строку "forum_id" в моей таблице "themes", чтобы она отображалась как 1069, если исходный идентификатор больше 1400.
Однако я хотел бы исключить все числа, указанные ниже в скобках, из изменений, так как они будут включены в исходный запрос, но я хочу защитить их от изменений.
Это лучший способ сделать это, или есть другой способ?
UPDATE topics
SET forum_id =
CASE
WHEN forum_id>1400
AND forum_id !=(3761,3762,3962,3749,2909,1917,1919,1891,3056,1415,4690,1427,1428,3677,3809,1425,1426,4465,4466,3810,1534,1535,1413,4402,3808,1453,1459)
THEN 1069
ELSE forum_id
END
Посмотрите ближе на синтаксис ОБНОВЛЕНИЕ
UPDATE topics
SET forum_id= 1069
WHERE forum_id > 1400
AND forum_id NOT IN (3761,3762,3962,3749,2909,1917,1919,1891,3056,1415,4690,1427,1428,3677,3809,1425,1426,4465,4466,3810,1534,1535,1413,4402,3808,1453,1459)
Вы можете сделать это немного проще (в CASE WHEN
нет необходимости):
UPDATE topics
SET forum_id = 1069
WHERE forum_id > 1400 AND NOT forum_id IN (3761,3762,3962,3749,2909,1917,1919,1891,3056,1415,4690,1427,1428,3677,3809,1425,1426,4465,4466,3810,1534,1535,1413,4402,3808,1453,1459)