1
我有以下兩個表:更新值,如果在不同的表中的列匹配
CREATE TABLE CustomProperties (
ID INTEGER PRIMARY KEY
, programID INTEGER
, Key VARCHAR
)
CREATE TABLE XXXCustom (
licID INTEGER
, propID INTEGER -- points to CustomProperties.ID
, Value VARCHAR
)
CustomProperties
作爲不同類型的我的程序可以包含自定義屬性的寄存器。 XXXCustom
存儲程序XXX實際使用的自定義屬性(另一個表存儲由所有程序共享的屬性)。
現在,如果我想修改一個對象的自定義屬性,我知道Key
和Value
我想修改它。但是,我首先需要將Key
「轉換」爲相關的ID
,然後我使用它在XXXCustom
中找到所需的行。
我試圖
UPDATE XXXCustom
SET pp.Value = 'TEST'
FROM CustomProperties cp INNER JOIN XXXCustom pp
ON pp.propID = cp.ID AND pp.Key = 'test'
但是,這將引發一個語法錯誤,可能是因爲UPDATE
doesn't have a FROM
clause,nor can you use JOIN
directly in an UPDATE
。很公平。
所以,我想
UPDATE (SELECT cp.Key, pp.Value
FROM CustomProperties cp INNER JOIN FtoolCustom pp
WHERE cp.ID = pp.propID)
SET pp.Value = 'TEST'
ON pp.Key = 'test'
但是,這也引發了語法錯誤,我相信因爲UPDATE
不能在子查詢工作,但requires a qualified table name。
所以現在我沒有想法。我是否必須手動執行此步驟:首先將Key
「轉換」爲其ID,然後使用該ID更新XXXCustom
?