表A
id name  ok
1  aaa   0
2  bbb   1
3  ccc   0
4  ddd   0
当我更新id=3的记录时ok=1 则id=2的ok就为0
即ok字段只能有一条记录为1 。这个用一个SQL语句能否搞定?

解决方案 »

  1.   

    update a
    set ok=1
    where id=3
    goupdate a
    set ok=0
    where id=2
      

  2.   

    update a set ok=1 from tableA a where a.id not in (select id from tableA where ok=1))
      

  3.   

    update a set ok=1 where id=3 
    update a set ok=0 where id<>3
      

  4.   

    update a
    set ok=case when id=3 then 1 else 0 end
      

  5.   

    update a set ok=0 from tableA a where a.id <> (select id from tableA where ok=1)
      

  6.   

    Yang_(扬帆破浪) 的方法好。多谢。结帖
      

  7.   

    先建个存储过程
    create procedure test (@id  int)
    as 
    begin 
      update BB set ok=1 where id=@id 
        update BB set ok=0 where id<>@id 
     end 
    然后一条语句搞定^-^
    exec test 3