2011-03-02 2 views
0

может ли кто-нибудь помочь мне сделать эту инструкцию sql? мое DBMS оленьей кожи все ВНУТРЕННИЙ JOINS с ОБНОВЛЕНИЕМ так что я должен использовать подзапрос:с помощью подзапроса с UPDATE

UPDATE INVENTORY 
SET i2.BVRTLPRICE01 = i1.BVRTLPRICE01 
WHERE exists 
(SELECT * 
FROM INVENTORY i1 
INNER JOIN INVENTORY i2 ON i2.CODE = REPLACE(i1.CODE, 'U', 'S') 
WHERE i1.CODE = 'UEOABAA000_005' 
) 

Сейчас его дает мне ошибку синтаксиса, что i2 и i1 не существует в запросе, не уверен, что им должны делать сделать эту работу?

благодарит за любую помощь!

+1

Вы не можете обновить таблицу, которую вы сейчас выбираете. – zerkms

+0

Также вы можете переписать этот запрос, используя 'join', но вам нужно указать имя dbms. – zerkms

+0

@zerkms СУБД называется повсеместным, но, как я уже упоминал, я не могу делать внутренние соединения с обновлениями с этой СУБД – seb

ответ

0

Для T-SQL (MS SQLServer) это будет выглядеть следующим образом:

UPDATE INVENTORY 
SET i2.BVRTLPRICE01 = i1.BVRTLPRICE01 
FROM INVENTORY i1 
INNER JOIN INVENTORY i2 ON i2.CODE = REPLACE(i1.CODE, 'U', 'S') 
WHERE i1.CODE = 'UEOABAA000_005' 

Вы можете поменять местами i2/i1.

Смежные вопросы