sql-server: можно ли обновить две таблицы с помощью Single Query? - PullRequest
0 голосов
/ 09 апреля 2010

Как я могу написать один запрос UPDATE, чтобы изменить значение COL1 на «X», если COL2 <10, в противном случае измените его на «Y», где следующие две таблицы связаны идентификатором </p>

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 ]

2 голосов
/ 09 апреля 2010

Вы не можете обновить две таблицы одновременно, в одном операторе.

Однако в вашем случае, если я вас правильно понимаю, вы действительно пытаетесь обновить TEMP на основе значений из TEMP2 - это, конечно, возможно

UPDATE TEMP
SET COL1 = CASE 
              WHEN TEMP2.COL2 < 10 THEN 'X'
              ELSE 'Y'
           END
FROM TEMP2
WHERE TEMP.ID = TEMP2.ID
1 голос
/ 09 апреля 2010
update TEMP
set COL1 = (case when TEMP2.COL2 < 10 then 'X' else 'Y' end)
from TEMP
inner join TEMP2 on TEMP.ID = TEMP2.ID
...