sql语句来更新特定的记录,但如果记录在列中包含某个值,则忽略该记录

kd3sttzy  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(286)

正如标题所示,我需要更新一周中几天的时间,但忽略一周中某一天等于周六或周日的记录。这个查询似乎还更新了包括星期六和星期天在内的记录,这正是我试图避免的。

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');
4sup72z8

4sup72z81#

请使用下面的查询,这是正确的方式,而不是使用多个或多个条件。

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');
btxsgosb

btxsgosb2#

你也可以用这个

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

相关问题