关于mysql:MySql-update-逗号-and的区别

更新语句正确的写法
update table_name set column1 = 'value1', column2 = 'value2' where id = 1
更新语句谬误的写法
update table_name set column1 = 'value1' and column2 = 'value2' where id = 1
运行谬误写法的后果
column1 会被更新为 0
起因剖析

应用and连接符时,该语句会被解析为

update table_name set column1 = ('value1' and column2 = 'value2') where id = 1

而 (‘value1’ and column2 = ‘value2’) 是一个逻辑表达式,因为 column2 = ‘value2’并不成立,故 (column2 = ‘value2’) 的后果为0,此时表达式等效为 (1 and 0),故理论的后果被更新为 0

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理