2017-01-18 77 views
-1

比如我有table1field1field2和想要做的事,如:我可以使用SELECT查詢中的不同值更新多個記錄嗎?

UPDATE table1 
SET field1, field2 = (SELECT field1, field 2 FROM tableXYZ) 
WHERE field 3 = 'foobar' 

或做我必須做的多組,運行相同的SELECT查詢幾次?

+0

這是這樣的事情,你應該先試試纔可以試試。 – Crowcoder

+2

您正在使用哪些DBMS? Postgres的?甲骨文? DB2?火鳥? –

+0

你似乎在問題本身中有正確的答案。你甚至嘗試執行它?你甚至可以在一個(從tableXYZ中選擇field1,field2中where something ='something')添加一個where條件 – shashwatZing

回答

0

假設你使用的任何數據庫都支持它,你可以加入表格。 SO:

Update table1 
set field1 = tbx.field1, 
field2 = tbx.field2 
from table1 join tablexyz on --some key value join 
+0

因此,我添加了'你使用的任何數據庫都支持' – MikeS

0

您可以通過將列置於左括號之間來執行元組賦值。

UPDATE table1 
    SET (column1, column2) = (SELECT col1, col2 
          FROM tableXYZ 
          WHERE ...) 
WHERE column3 = 'foobar'; 

以上是標準SQL,但不是所有的DBMS都支持。

請注意,您必須使用WHERE子句中的子選擇,以確保只選擇返回行(您通常會提出這樣一個共同的相關子查詢)。

相關問題