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 及以后的版本中得到支持。 

解决方案 »

  1.   

    一个正常的update语句阿,更新完以后再执行就没有更新数据了,所以影响的列为0的
      

  2.   

    呵呵.
    忘了说.
    为什么第一次执行时有影响的行数.
    而第二次执行时.没有受影响的记录行了
    这是因为.
    第一次执行时.
    产生了记录更新.
    所以在 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