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

Sql server sql server:我可以用一个查询更新两个表吗?,sql-server,sql-server-2005,sql-server-2008,Sql Server,Sql Server 2005,Sql Server 2008,如果COL2

如果COL2<10,我如何编写单个更新查询将COL1的值更改为“X”,否则将其更改为“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)

提前谢谢

不能在一条语句中同时更新两个表

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

UPDATE TEMP
SET COL1 = CASE 
              WHEN TEMP2.COL2 < 10 THEN 'X'
              ELSE 'Y'
           END
FROM TEMP2
WHERE TEMP.ID = TEMP2.ID
更新温度
设置COL1=CASE
当TEMP2.COL2<10时,则为“X”
还有“Y”
结束
从TEMP2开始
其中TEMP.ID=TEMP2.ID

不能在一条语句中同时更新两个表

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

UPDATE TEMP
SET COL1 = CASE 
              WHEN TEMP2.COL2 < 10 THEN 'X'
              ELSE 'Y'
           END
FROM TEMP2
WHERE TEMP.ID = TEMP2.ID
更新温度
设置COL1=CASE
当TEMP2.COL2<10时,则为“X”
还有“Y”
结束
从TEMP2开始
其中TEMP.ID=TEMP2.ID
更新温度
设置COL1=(当TEMP2.COL2<10时,则为'X'或'Y'结束)
临时工
TEMP.ID=TEMP2.ID上的内部联接TEMP2
更新温度
设置COL1=(当TEMP2.COL2<10时,则为'X'或'Y'结束)
临时工
TEMP.ID=TEMP2.ID上的内部联接TEMP2