首页 > 代码库 > update and的坑
update and的坑
开发那边抛出个有意思的问题,下面的现象如何解释呢?
mysql> select * from A;+------+------+| t1 | t2 |+------+------+| 1 | 1 | | 2 | 2 | | 3 | 3 | +------+------+3 rows in set (0.00 sec)mysql> update A set t1=0 and t2=5; Query OK, 3 rows affected (0.00 sec)Rows matched: 3 Changed: 3 Warnings: 0mysql> select * from A; +------+------+| t1 | t2 |+------+------+| 0 | 1 | | 0 | 2 | | 0 | 3 | +------+------+3 rows in set (0.00 sec)update 语句 and 怎么解释?
Update的语法是:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]Multiple-table syntax:UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
select的语法:
Name: ‘SELECT‘Description:Syntax:SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE ‘file_name‘ [CHARACTER SET charset_name] export_options | INTO DUMPFILE ‘file_name‘ | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]]
update语法是set后面以逗号区分
mysql> select * from test where t1=0 and t2=5;
Empty set (0.00 sec)
使用and被解析成 t1=0 and t2=5 把后面作为一个整体,值变成0了
变成这样了,update A set t1=(0 and t2=5),t2==5 and 0
换种写法更加明白了
先记录下,后面整体再整理!!!
update and的坑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。