我正在尝试使用3个表数据(join)更新1个表中的2列,这是它抛出语法错误的原因之一。当我执行2个set语句中的1个set语句时,它的工作正常。但是,如果我使用两个set语句,它的语法错误。(第6行和第7行)有人能纠正我的语句吗
UPDATE TIBENVINFO tei
INNER JOIN TIB_CROSSREF tcr
ON (tei.ProductName = tcr.Env_Product_Name and tei.Version = tcr.Version )
INNER JOIN ENDOFSUPPORTPRODUCTINFO esi
ON (esi.ProductName = tcr.Support_Product_Name)
**SET tei.SupportEndDate = esi.EndOfSupportDate,
SET tei.UpdateRequired = 'Yes'**
Where (DATEDIFF(esi.EndOfSupportDate,CURDATE()) < 90) and tei.HostName = "XXXXXXXXX"
错误:
sql语法有错误;检查与您的mariadb服务器版本相对应的手册,以了解在第7行的“set tei.updaterequired=”yes“where(datediff(esi.endofsupportdate,curdat)”附近使用的正确语法
2条答案
按热度按时间smdnsysy1#
你只需要
set
一次,列之间用逗号分隔:我还建议将日期比较改写为:
这不仅更容易写和读,而且更容易优化。
jxct1oxe2#
不能在更新查询中反复写入set关键字。其语法为:
因此,如果要更新表中的多个列,可以在列名中添加逗号,如下所示:
希望对你有用。。