使用基于子查询的where子句进行UPDATE



我有一个表(CMS),它需要一个基于CMS中的列更新的列和另一个表。。。CUST中的行由CMS&CUST呼叫CUSTNUM。。。我不能按预期工作,有什么帮助吗?

update CMS
set SHIPLIST = 'FEG'
from CMS
inner join CUST on CMS.CUSTNUM = CUST.CUSTNUM

谢谢。

您的查询看起来不错。还有其他方式来表达查询,例如:

update CMS
    set SHIPLIST = 'FEG'
    where CMS.CUSTNUM in (select Cust.CUSTNUM from Cust);

如果在Cust表中存在多个匹配,则这可以具有更好的性能。但是,如果您的第一个版本失败了,那么这可能也会失败。

您还可以很好地使用相关更新查询

请参阅下面的帖子:

https://www.ibm.com/support/knowledgecenter/ssw_i5_54/sqlp/rbafyexsub4.htm

不确定sql server。但这将适用于MySQL

  update CMS
    inner join CUST on CMS.CUSTNUM = CUST.CUSTNUM
    set CMS.SHIPLIST = 'FEG'

顺序应该是先JOIN,然后SET

您的查询看起来不错。。。当我在我的测试实验室检查时,它起了作用。

更新CMSset SHIPLIST='FEG'来自CMSCMS上的内部联接CUST。CUSTNUM=CUST.CUSTNUM

最新更新