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语句。查询将无法按预期工作