sql-server:我可以用Single Query更新两个表吗?

时间:2010-04-09 07:05:06

标签: sql-server sql-server-2005 sql-server-2008

如果COL2<

如何写单个UPDATE查询以将COL1的值更改为'X'。 10否则将其更改为“Y”,其中以下两个表按ID链接

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 个答案:

答案 0 :(得分:2)

您无法在一个语句中一次更新两个表。

但是,在您的情况下,如果我理解正确,您真正想要做的是根据TEMP2的值更新TEMP - 这当然是可能的

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

答案 1 :(得分: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