2014-10-10 68 views
-1

Oracle數據庫SQL更新內部連接的麻煩與Oracle要求

傢伙嗨,我有與Oracle語法的麻煩和更新內部聯接我想是這樣的,但它不工作

「缺少SET關鍵字「

UPDATE table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id_description = t2.id_description 
SET field = '0.0.0.1.5.' 
WHERE t2.code='XXXX' AND t2.status IN ('VALUE1','VALUE2'); 

THX很多

+0

其相似但不重複,請幫助我。) – funtocompute 2014-10-10 12:59:33

回答

0

在SQL Server中的作品,奧拉騎士還有另外一個語法

UPDATE table1 t1 
    SET field = '0.0.0.1.5.' 
WHERE EXISTS (SELECT 'X' 
       FROM table2 t2 
       WHERE t1.id_description = t2.id_description 
       AND t2.code='XXXX' 
       AND t2.status IN ('VALUE1','VALUE2')); 
+0

什麼「X」是指這裏?似乎在工作,我可以寫這個嗎? UPDATE table1 t1 SET field ='0.0.0.1.5。' (選擇1 FROM table2 t2 WHERE t1.id_description = t2.id_description AND t2.code ='XXXX' AND t2.status IN('VALUE1','VALUE2'));是否有任何「更清潔」或「更小」的解決方案? – funtocompute 2014-10-10 13:16:43

+0

是的,你可以寫。這裏的'X'可以被任何有效的字符串或數字取代。當「t1.id_description = t2.id_description」和其他條件滿足時,子查詢只返回一個真實條件。 – San 2014-10-10 13:27:48

+0

感謝您的解釋,我保持您的解決方案使用INNER JOIN;) – funtocompute 2014-10-10 13:46:37

0
UPDATE t1 
SET t1.field = '0.0.0.1.5.' 
From table1 AS t1 
INNER JOIN table2 AS t2 ON t1.id_description = t2.id_description 
WHERE t2.code='XXXX' AND t2.status IN ('VALUE1','VALUE2'); 
+0

「SQL命令不能正確地結束」 – funtocompute 2014-10-10 12:53:09

0

試試這個:

UPDATE table1 t1 
    SET field = '0.0.0.1.5.' 
WHERE t1.id_description in (
     select t2.id_description 
      from table2 t2 
      where t2.code='XXXX' 
      AND t2.status IN ('VALUE1','VALUE2') 
     ) 
+0

不起作用「缺少SET關鍵字」 – funtocompute 2014-10-10 12:57:52

+0

「缺少右括號」 – funtocompute 2014-10-10 13:12:28

+0

無法工作無效標識符 – funtocompute 2014-10-10 13:28:36