sql-server:我可以使用单一查询更新两个表吗?

问题描述:

我如何写一个更新查询更改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) 

在此先感谢链接!

您无法一次更新两个表格,只有一条语句。

然而,在你的情况,如果我理解正确的话,你真正要做的是更新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

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