如何批量修改MySQL表中allow_two_day_ordering字段值为False?
你的SQL语句问题分析及修正方案
原语句的问题
你写的语句UPDATE venue_locations set allow_two_day_ordering = FALSE WHERE ID = '26862,26865,26868';是错误的。原因是:
- 使用
=运算符时,MySQL会把右侧的字符串'26862,26865,26868'作为整体匹配ID字段,不会拆分出三个独立的ID值,最终只会修改ID等于这个字符串的行(显然你的表中不存在这样的ID)。
正确的写法分两种情况
情况1:修改表中所有行的allow_two_day_ordering为False
如果你需要把整个列的所有值都改成False,直接去掉WHERE子句即可:
UPDATE venue_locations SET allow_two_day_ordering = FALSE;
注意:执行全表更新前,建议先执行
SELECT * FROM venue_locations;确认表数据,避免误操作。如果表数据量极大,可以考虑分批更新或添加事务保障。
情况2:仅修改指定ID的行
如果只是要修改ID为26862、26865、26868的这几行,需要使用IN运算符;若ID是数值类型,不需要加引号:
UPDATE venue_locations SET allow_two_day_ordering = FALSE WHERE ID IN (26862, 26865, 26868);
若ID是字符串类型,则给每个ID添加引号:
UPDATE venue_locations SET allow_two_day_ordering = FALSE WHERE ID IN ('26862', '26865', '26868');
内容的提问来源于stack exchange,提问作者Singleton
相关产品推荐
相关产品推荐

