我正在尝试更新一个表中的2列使用3个表数据(联接)一些如何它抛出语法错误。 当我用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服务器版本相对应的手册中是否有正确的语法,以便在“set tei.updateRequired=”yes“附近使用(DATEDIFF(esi.endofsupportDate,curdat'at line 7
您只需要set
一次,列之间用逗号分隔:
SET tei.SupportEndDate = esi.EndOfSupportDate,
tei.UpdateRequired = 'Yes'
我还建议将日期比较改写为:
where esi.EndOfSupportDate > curdate() - interval 90 day and
tei.HostName = 'XXXXXXXXX' -- note single quotes not double quotes
这不仅更容易写和读,而且也更容易优化。