update requisition set layer=1 and block=1 and number='01'它等价于
update requisition set layer = (1 and block=1 and number='01')
更新完成 layer 将会被更新为 0 或 1INSERT [INTO] tbl_name
SET col_name=(expression | DEFAULT), ...这个句法在 MySQL 3.22.10 及以后的版本中得到支持。
update requisition set layer = (1 and block=1 and number='01')
更新完成 layer 将会被更新为 0 或 1INSERT [INTO] tbl_name
SET col_name=(expression | DEFAULT), ...这个句法在 MySQL 3.22.10 及以后的版本中得到支持。
忘了说.
为什么第一次执行时有影响的行数.
而第二次执行时.没有受影响的记录行了
这是因为.
第一次执行时.
产生了记录更新.
所以在 PHP 返回受影响的记录数,而第二次执行时,
由于更新值与原值是一样的,
所以 MySQL 就把这笔更新忽略了.
所以返回受影响的记录数将为 0
在 mysql.exe 字符客户端里执行可能会有更友好的显示结果
示例如下:
mysql> use test;
Database changed
mysql> update `t` set `qty` = 1 and `price` =1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 3 Changed: 0 Warnings: 0有看到 Rows matched 这一个提示信息了吧.
说明符合更新条件的记录数是 3, 而实际受影响而更新的记录数为 0