且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在单个sql语句中更新多个值

更新时间:2023-01-23 10:32:57

尝试这样的事情:

  UPDATE  t1  SET  t1.sal = t2.sal 
FROM \\ temp AS t1 INNER JOIN
SELECT id, CASE WHEN dep = ' it' 那么 sal + 1000
WHEN dep = ' ac' THEN sal + 2000
ELSE sal
END AS sal
FROM emp
AS t2 ON t1.id = t2.id


  update  \\ temp  set  sal = sal + 

case 何时 dep = ' 它' 然后 1000
dep = ' ac' 然后 2000
else 0
end


  update  emp e1  set  e1.sal = e1.sal +( select   case   e1.dep = '  it'   '  1000' 
when e1.dep = ' ac' then ' 2000'
else ' 0'
端跨度>)


ID   NAME              SAL    DEP   LOC
----  ------ ---------- ---------- ----- -----
  1   viki              1000   it    cb
  2   allen             2000   ac    ch
  3   smith             2000   ac    sa
  4   adam              5000   it    ch
  5   will              4000   ac    cb
  6   john              6000   it    cb
  7   bradley          10000   it    ch



i have table like this if dep = 'it' update 1000 if dep='ac' update 2000


I tried this query but it fails

update emp set sal=sal+(select case when dep='it' then '1000'
                                    when dep='ac' then '2000'
                                    else '0'
                                    end
                                    from emp);

Try something like this:
UPDATE t1 SET t1.sal = t2.sal
FROM emp AS t1 INNER JOIN (
    SELECT id, CASE WHEN dep='it' THEN sal+1000
                   WHEN dep='ac' THEN sal+2000
                   ELSE sal
               END AS sal
    FROM emp
    ) AS t2 ON t1.id = t2.id


update emp set sal=sal+
(
  case when dep='it' then 1000
       when dep='ac' then 2000
       else 0
       end
)


update emp e1 set e1.sal=e1.sal + (select case when e1.dep='it' then '1000'
                                    when e1.dep='ac' then '2000'
                                    else '0'
                                    end)