写存储过程 查询表,得到俩个整数做比较,如果a>b,status=0,否则status=1
create table test
(
a int ,
b.int ,
statur int default 0
)insert into test values(1,12,0),(32,2,0),(1,12,0),(1,12,0),(1,12,0),(1,12,0);

解决方案 »

  1.   


    update test
    set statur=(case when a>b then 0 else 1 end)--直接更新就好了吧,不用存储过程哈
      

  2.   

    create table test
    (
    a int ,
    b int ,
    STATUS AS (CASE WHEN  a > b THEN 0 ELSE 1 END) )  --用计算列来的更直接些
    INSERT INTO test(a,b)
    SELECT 1,2
    UNION ALL
    SELECT 3,4
    UNION ALL
    SELECT 6,5SELECT * FROM Test
    /*
    a b STATUS
    1 2 1
    3 4 1
    6 5 0*/
      

  3.   

    如果我要根据当前的条件再update  set a=bupdate test
    set statur=(case when a>b then 0 else 1 end)
    a=(case when a>b then b else a end)
    有没有办法不用在重复一次case when a>b
      

  4.   


    update test
    set statur=(case when a>b then 0 else 1 end,
    a=(case when a>b then b else a end)这样不可以吗?
      

  5.   

    create table test
    (
    a int ,
    b int ,
    statur int default (0)
    )insert into test values(1,12,0),(32,2,0),(1,12,0),(1,12,0),(1,12,0),(1,12,0);update test
    set statur=(case when a>b then 0 else 1 end),
    a=(case when a>b then b else a end)select * from test/*
    a b statur
    1 12 1
    2 2 0
    1 12 1
    1 12 1
    1 12 1
    1 12 1
    */