2010-04-09 31 views
0

我如何寫一個更新查詢更改COL1的值「X」,如果COL2 < 10,否則將其更改爲「Y」,在下面兩個表是由IDsql-server:我可以使用單一查詢更新兩個表嗎?

CREATE TABLE TEMP(ID TINYINT, COL1 CHAR(1)) 
INSERT INTO TEMP(ID,COL1) VALUES (1,'A') 
INSERT INTO TEMP(ID,COL1) VALUES (2,'B') 
INSERT INTO TEMP(ID,COL1) VALUES (11,'A') 
INSERT INTO TEMP(ID,COL1) VALUES (17,'B') 

CREATE TABLE TEMP2(ID TINYINT, COL2 TINYINT) 
INSERT INTO TEMP2(ID,COL2) VALUES (1,1) 
INSERT INTO TEMP2(ID,COL2) VALUES (2,5) 
INSERT INTO TEMP2(ID,COL2) VALUES (11,10) 
INSERT INTO TEMP2(ID,COL2) VALUES (17,15) 

在此先感謝鏈接!

回答

2

您無法一次更新兩個表格,只有一條語句。

然而,在你的情況,如果我理解正確的話,你真正要做的是更新TEMP基於從TEMP2值 - 這是當然可以

UPDATE TEMP 
SET COL1 = CASE 
       WHEN TEMP2.COL2 < 10 THEN 'X' 
       ELSE 'Y' 
      END 
FROM TEMP2 
WHERE TEMP.ID = TEMP2.ID 
+0

謝謝:)的!很多! – RedsDevils 2010-04-09 07:19:48

1
update TEMP 
set COL1 = (case when TEMP2.COL2 < 10 then 'X' else 'Y' end) 
from TEMP 
inner join TEMP2 on TEMP.ID = TEMP2.ID 
+0

謝謝你的答案! – RedsDevils 2010-04-09 07:36:02

相關問題