2012-12-07 47 views
2

的結果我有兩個表:德比DB:SQL更新select語句

元:

ID (int. key) 
TYPE (String) 

ELEMENT_ATTRIBUTES:

ELEMENT_ID (int) 
ATTR_NAME (String) 

(我忽略了字段在我原來的表格中,這對於這個問題不是必需的)

我想這樣做:

UPDATE ELEMENT e, ELEMENT_ATTRIBUTES a 
SET a.ATTR_NAME='new name' 
WHERE e.ID = a.ELEMENT_ID 
    AND e.TYPE = 'a specific type' 
    AND a.ATTR_NAME = 'old name' 

這可能在德比SQL?

回答

4

望着the Derby Reference Manual on the UPDATE statement語法是:

{ 
    UPDATE table-Name [[AS] correlation-Name] 
     SET column-Name = Value 
     [ , column-Name = Value} ]* 
     [WHERE clause] | 
    UPDATE table-Name 
     SET column-Name = Value 
     [ , column-Name = Value ]* 
     WHERE CURRENT OF 
} 

所以,不,你不能執行查詢,如你的問題。你需要修改它有點像:

UPDATE ELEMENT_ATTRIBUTES a 
SET a.ATTR_NAME='new name' 
WHERE a.ATTR_NAME = 'old name' 
AND EXISTS (SELECT 1 
      FROM ELEMENT e 
      WHERE a.ELEMENT_ID = e.ID AND e.TYPE = 'a specific type')