2010-08-27 94 views
0

這個僞代碼(不準確的SQL)顯示我想要做什麼。在一個sql語句中更新多行中的多個列?

update tableA (colA, colB, colC, colD) 
select b.colA, b.colB, c.colC, c.colD 
from tableB b 
    left outer join tableC c 
     on b.id = c.id 
    inner join tableA a 
     on c.myNum = a.myNum 
    inner join tableD 
     on a.newId = f.newId 
where f.imported = 1 

如何以語法正確的方式做到這一點?

+0

爲什麼你必須做1個查詢?正如你可以在這裏看到的 http://msdn.microsoft.com/en-us/library/aa260662%28SQL.80%29.aspx 你不能更新2字段的2個單獨的表在1查詢(也許如果你嘗試玩意見,但我仍然不明白爲什麼)。 – 2010-08-27 14:33:30

+0

我不必這樣做,但我正在嘗試更新> 100個字段,因此在一個查詢中更新它比在許多查詢中更快。 – dmr 2010-08-27 14:34:46

回答

2

事情是這樣的:

UPDATE TABLE 
SET ... 
FROM Table1, Table2 .... 
WHERE ..... 


update tableA 
Set a.ColA = b.ColA, 
    a.Colb = b.ColB, 
    a.ColC = c.Colc, 
    a.ColD = c.ColD 
from tableB b 
left outer join tableC c 
    on b.id = c.id 
inner join tableA a 
    on c.myNum = a.myNum 
inner join tableD 
    on a.newId = f.newId 
where f.imported = 1 
0
SQL> select *from Dewashish84; 

E_ID E_NAME  E_EDUCATION 
---------- ------------- --------------- 

    100 dewa   MCA 
    101 Raj   MSCIT 
    145 mohan   BA 
    103 ram   MTECH 
    5 Sohan   BTECH 

SQL>

update harshad set E_NAME= decode(E_EDUCATION,'MCA','dewa','MSCIT','Raj','BA','mohan', 
    'MTECH','ram'); 

5 rows updated.