Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL语句更新特定记录,但如果记录在列中包含特定值,则忽略该记录_Mysql_Sql - Fatal编程技术网

Mysql SQL语句更新特定记录,但如果记录在列中包含特定值,则忽略该记录

Mysql SQL语句更新特定记录,但如果记录在列中包含特定值,则忽略该记录,mysql,sql,Mysql,Sql,正如标题所示,我需要更新一周中几天的时间,但忽略一周中某一天等于周六或周日的记录。该查询似乎还更新了包括周六和周日在内的记录,这正是我试图避免的 UPDATE openingTimes SET timeOpening = '09:00:00', timeClosing = '18:00:00' WHERE departmentId=79 OR departmentId=3 OR departmentId=6 OR departmentId=10 OR de

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

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

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

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

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

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

你也可以用这个

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

你也可以用这个

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


这些是现有的部门ID还是现有部门ID的一个子集只是我需要的部门ID的一个子集(79,3,6,…)中的部门ID对您有用是的,谢谢。我已经有一段时间没有执行原始sql查询了。我仍然需要弄清楚为什么和不起作用,但请看那些
部门ID
是所有存在的还是所有存在的特定子集只是我需要的部分的子集,
部门ID在(79,3,6,…)
中的位置可能对您有用是的,谢谢。我已经有一段时间没有执行原始sql查询了。我还需要弄清楚为什么和不起作用,谢谢,这是有效的。我的original AND与您的NOT IN行为有何不同,或者我的语法对于我试图完成的任务完全不正确?您的原始查询不起作用,因为您需要在
子句周围添加paren,例如
WHERE(departmentID=79或departmentID=3或…)和…
。您使用的语法和未使用的语法(星期六或星期日);不正确。那不是正确的方法defile@kmoser因此,错误出现在我的WHERE子句中,因为我最初没有将它放在parens中?否则,底部的和将起作用?@Rick子句的
部分本身是正确的。由于MySQL的运算符优先级规则,您需要将parens放在
c周围LAUSE将它们转换为单个表达式,否则只有最后一个
计算为
的左侧。谢谢,这是有效的。我的原始查询和您的NOT IN的行为如何,或者我的语法对于我试图完成的任务是否完全不正确?您的原始查询不起作用,因为您需要请围绕
子句进行比较,例如
WHERE(departmentID=79或departmentID=3或…)和…
。您使用的语法和否(dayOfWeek='Saturday'或dayOfWeek='Sunday');不正确。那不是正确的方法defile@kmoser因此,错误出现在我的WHERE子句中,因为我最初没有将它放在parens中?否则,底部的和将起作用?@Rick子句的
部分本身是正确的。由于MySQL的运算符优先级规则,您需要将parens放在
c周围LAUS将它们转换为单个表达式,否则只有最后一个
计算为
的左侧。不正确的case语句。查询将无法按预期工作正确的case语句。查询将无法按预期工作