提问者:小点点

MySQL join语句语法问题


我正在尝试更新一个表中的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


共1个答案

匿名用户

您只需要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

这不仅更容易写和读,而且也更容易优化。