写了一条语句update users set state=2 where id in(select id from users where id>100)这样更新的结果应该是只有一条记录才对
可它更新的是很多条数据select id from users where id>100这条语句查出的结果是101
谁能帮我解释一下啊

解决方案 »

  1.   

    update users set state=2 where id in(select id from users where id>100)users 你这个表的101ID很多呀,晕
      

  2.   

    update users set state=2 where id =101相当于这外SQL ,说明你的users有多条ID = 101的记录
      

  3.   

    试试select count(*) from users where id>100  
    结果有多少条就会更新多少条数据
      

  4.   

    养成习惯,更新前要select
     select * from users where id in(select id from users where id>100)
      

  5.   

    select id from users where id>100ID 大于 100的数据有101行
    update users set state=2 where id in(select id from users where id>100)更新了所有ID大于100的数据,当然是很多行,而不是你说的一行了!
      

  6.   

    你的users有很多id = 101
      

  7.   

    可以很明确的ID是主键,是没有重复的
    我也按照上面的说了查了一下
    select * from users where id in(select id from users where id>100) 
    确实是查出来很多条数据
    可是那是不对的

    我嵌套在里面的语句是一个多表查询,但是原理是一样的

    我郁闷了一下午。
      

  8.   

    找了个高手看了下
    问题依旧
    换个写法就是好的select * from users,(select id from users where id>100)t where user.id in (t.id)这样查出来的结果是正确的,但是我要做update怎么做啊?