Условный запрос MySQL с использованием CASE

0

Я пытаюсь изменить следующую строку "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
Теги:

2 ответа

3

Посмотрите ближе на синтаксис ОБНОВЛЕНИЕ

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)
1

Вы можете сделать это немного проще (в 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню