SQL инструкция для обновления указанных c записей, но игнорирует запись, если она содержит определенное значение в столбце - PullRequest
0 голосов
/ 26 мая 2020

Как видно из названия, мне нужно обновить время для дней недели, но игнорировать записи, у которых день недели равен субботе или воскресенью. Похоже, что запрос также обновляет записи, которые включают субботу и воскресенье, чего я пытаюсь избежать.

UPDATE openingTimes SET timeOpening = '09:00:00', timeClosing = '18:00:00'
    WHERE departmentId=79
    OR departmentId=3
    OR departmentId=6
    OR departmentId=10
    OR departmentId=15
    OR departmentId=18
    OR departmentId=25
    OR departmentId=29
    OR departmentId=32
    OR departmentId=36
    OR departmentId=40
    OR departmentId=44
    OR departmentId=49
    OR departmentId=54
    OR departmentId=57
    OR departmentId=61
    OR departmentId=67
    OR departmentId=72
    OR departmentId=79
    OR departmentId=83
    OR departmentId=84
    OR departmentId=89
    OR departmentId=95
    OR departmentId=99
    OR departmentId=113
    OR departmentId=118
    OR departmentId=120
    OR departmentId=124
    OR departmentId=131
    OR departmentId=136
    OR departmentId=137
    OR departmentId=142
    OR departmentId=145
    OR departmentId=149
    OR departmentId=157
    OR departmentId=162
    AND NOT (dayOfTheWeek='Saturday' OR dayOfTheWeek='Sunday');

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Используйте запрос ниже, это правильный способ, а не использование нескольких условий или.

UPDATE openingTimes SET timeOpening = '09:00:00', timeClosing = '18:00:00'
WHERE departmentId in
(79,3,6,10,15,18,25,29,32,36,40,44,49,54,57,61,67,72,79,83,84,89,95,99,
113,118,120,124,131,136,137,142,145,149,157,162)    
AND dayOfTheWeek NOT in  ('Saturday', 'Sunday');
0 голосов
/ 26 мая 2020

Вы также можете использовать этот

UPDATE openingTimes SET timeOpening = case dayOfTheWeek  NOT in  ('Saturday', 
'Sunday') then '09:00:00' else timeOpening  end
,timeClosing  = case dayOfTheWeek  NOT in  ('Saturday', 'Sunday') then 
'18:00:00' else timeOpening  end
WHERE departmentId in
(79,3,6,10,15,18,25,29,32,36,40,44,49,54,57,61,67,72,79,83,84,89,95,99,
113,118,120,124,131,136,137,142,145,149,157,162);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...