例子:F1,F2,F3,F4
1
2
3如果f1的值是1的话就更新列f2,如果是列f1的值是2的话就更新列f3,如果是3的话就更新列f4

解决方案 »

  1.   

    更新什么??--> liangCK小梁 于2008-10-21
    --> 生成测试数据: #T
    IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
    CREATE TABLE #T (F1 INT,F2 INT,F3 INT,F4 INT)
    INSERT INTO #T
    SELECT 1,null,null,null UNION ALL
    SELECT 2,null,null,null UNION ALL
    SELECT 3,null,null,null--SQL查询如下:UPDATE #T
      SET F2=CASE WHEN F1=1 THEN F1 END,
          F3=CASE WHEN F1=2 THEN F1 END,
          F4=CASE WHEN F1=3 THEN F1 END
          
    SELECT * FROM #T;/*
    F1          F2          F3          F4
    ----------- ----------- ----------- -----------
    1           1           NULL        NULL
    2           NULL        2           NULL
    3           NULL        NULL        3(3 行受影响)
    */
      

  2.   

    UPDATE tb
    SET    F2=CASE WHEN F1=1 THEN 待更新的值 ELSE F2 END,
           F3=CASE WHEN F1=2 THEN 待更新的值 ELSE F3 END,
           F4=CASE WHEN F1=3 THEN 待更新的值 ELSE F4 END
      

  3.   

    一条语句的我不会……
    UPDATE tb set f2='b' where f1=1
    UPDATE tb set f3='c' where f1=2
    UPDATE tb set f4='d' where f1=3
      

  4.   

    update tb set F2=case when F1=1 then 'xxx' else F2 end,
                  F3=case when F1=2 then 'xxx' else F3 end,
                  F4=case when F1=3 then 'xxx' else F4 end,
      

  5.   

    先根据相应的条件得到f1的值,然后:String   updatesql = “”;if(f1 == 1)
    {
      updatesql = update tablename set f2列的值;
    }
    if(f1 == 2)
    {
      updatesql = update tablename set f3列的值;
    }
    if(f1 == 3)
    {
      updatesql = update tablename set f4列的值;
    }这样也可以实现不过比较麻烦,期望更好的答案
      

  6.   

    --CASE語句即可,符合條件的更新,不符合條件的等於原值。
    UPDATE TB
    SET F2=(CASE WHEN F1=1 THEN 'XX' ELSE F2 END),
        F3=(CASE WHEN F1=2 THEN 'YY' ELSE F3 END),
        F4=(CASE WHEN F1=3 THEN 'ZZ' ELSE F4 END)
      

  7.   

    UPDATE #T
    SET    f2=CASE F1  WHEN  1 THEN 11 ELSE F2 END,
           f3=CASE F1  WHEN 2 THEN 22 ELSE F3 END,
           f4=CASE F1  WHEN 3 THEN 44 ELSE F4 END
    select * from #T
      

  8.   

    不是把f1这一列的值更新成f2,f3,f4的值,,是更新成其他的值,比如更成成当前的日期