關於MySQL執行UPDATE語句錯誤的使用“AND”替代“,”作為連線符
正確的UPDATE語句:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition_column = condition_value
錯誤的寫成:
UPDATE table_name SET column1 = value1 AND column2 = value2 WHERE condition_column = condition_value
這造成了一些小麻煩
舉例:
CREATE TABLE `user` ( `id` int(5) NOT NULL AUTO_INCREMENT, `user_name` varchar(500) NOT NULL DEFAULT '', `age` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
新增一條記錄
INSERT INTO user(user_name,age) VALUES ('zhangsan',20);
執行錯誤的UPDATE語句
UPDATE user SET age = 30 AND user_name = 'lisi' WHERE id = 1
期望結果是將id=1的這條記錄中user_name列更新為“lisi”,age列更新為“30”
然而實際執行結果
實際結果是user_name欄位沒有被更新,age欄位則被更新成了0
在執行一條語句
UPDATE user SET age = 30 AND user_name = 'zhangsan' WHERE id = 1
這次執行的語句與之前唯一不同的是這次要更新的user_name與當前行中的user_name值相同
age欄位變成了1
SQL/">MySQL的解析邏輯 30 與 user_name = 'zhangsan'
第一次user_name = 'lisi',假,所以更新為0
第二次user_name = 'zhangsan',真,所以更新為1
我們利用查詢語句也能得出結論
SELECT 30 AND user_name = 'zhangsan' column1, 30 AND user_name = 'lisi' column2 FROM user