我有以下两个表:
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
?
答案 0 :(得分:2)
怎么样:
xmlns:xsl="http://www.w3.org/TR/WD-xsl"