如何使用相关子查询更新记录?
我有一个接受一个参数并返回表/结果集的函数。我想在表中将字段设置为该记录集的第一个结果,并将表的其他字段之一作为参数传入。如果单词太复杂,查询看起来像这样:
UPDATE myTable
SET myField = (SELECT TOP 1 myFunctionField
FROM fn_doSomething(myOtherField)
WHERE someCondition = 'something')
WHERE someOtherCondition = 'somethingElse'
在这个例子中,myField
和myOtherField
是myTable
中的字段,myFunctionField
是字段返回fn_doSomething
。这对我来说似乎合乎逻辑,但我得到以下奇怪的错误:
'myOtherField' is not a recognized OPTIMIZER LOCK HINTS option.
知道我做错了什么,我怎么能做到这一点?
更新:
根据Anil Soman的回答,我意识到该函数期望一个字符串参数,并且传递的字段是一个整数。我不确定这是否应该是一个问题,因为使用整数值显式调用函数是有效的 - 例如fn_doSomething(12345)似乎自动将数字转换为字符串。但是,我试图做一个明确的演员:
UPDATE myTable
SET myField = (SELECT TOP 1 myFunctionField
FROM fn_doSomething(CAST(myOtherField AS varchar(1000)))
WHERE someCondition = 'something')
WHERE someOtherCondition = 'somethingElse'
现在我收到以下错误:
Line 5: Incorrect syntax near '('.
没有找到相关结果
已邀请:
4 个回复
犁攀富
掀辟髓观粟
舜辉
苦诫