update set结果显示受影响行数多于查询的行数?

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:27:30
update 表set c_bs='1'
where c_bs='0'
and c_id>='09001164'
and c_id<='09001168'

返回的结果是:
1行受影响
0行受影响
5行受影响

这正常吗?
select * from 表
where c_bs='0'
and c_id>='09001164'
and c_id<='09001168'

得到结果是5行记录

说明你的表里有触发器,当你update操作是,触发器也做了一些操作。
1行受影响
0行受影响
是触发器影响的行数。你可以尝试把触发器停用,就会得到:
5行受影响

正常,不要太受它返回的这个影响行数影响。

这个显示的是数据库内部的东西。。
如果说影响行数是0,那么就是没有update,如果大于0,是几都不重要。

经常见到这种情况

例如
update person set name='123' where name='234'

1行受影响
1行受影响
1行受影响

但是实际上记录只改变了一条。
放心吧,你的sql语句没有问题。
字符串之间是可以比较大小的,规则就是先比较长度,长度相等再从头到尾逐个比较。

只有update/delete/insert才会存在触发器

如果是select时,楼主应该还有其它语句

不正常 你应该修改的是c_id大于等于09001164和小于等于09001168的c_bs值吧
用between。。 and。。 啊
SQL里面>= 和<=有别的用方法的。。。不是大于等于。。
update 表set c_bs='1'
where c_bs='0'
and c_id between 09001164 and 09001168

另外问下c_id是int型吧?加单引号干嘛。。
。。。貌似我错了