“您的SQL语法有错误;请查看与您的MySQL对应的手册”

时间:2016-03-14 14:06:27

标签: mysql phpmyadmin

在这里失去理智,试图弄清楚这一点。这是SQL:

Update `ScheduledShifts` ss 
LEFT JOIN `Shifts` s ON ss.`ShiftID` == s.`ShiftID` 
SET ss.`IsWeekend` 
WHERE (s.`WeekendDays` & (1 << (DAYOFWEEK(ss.`OriginalShiftDate`)-1))) <> 0;

和完整的错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在'== s附近使用正确的语法。ShiftID SET ss。IsWeekend WHERE(s。WeekendDays&amp;(1&lt; 1&lt; 1&gt; &lt;(DAYOFWEEK(第1行的ss。)

2 个答案:

答案 0 :(得分:1)

错误本身就是回答。使用=代替==

UPDATE ScheduledShifts ss 
LEFT JOIN Shifts s ON ss.ShiftID = s.ShiftID 
SET ss.IsWeekend 
WHERE (s.WeekendDays & (1 << (DAYOFWEEK(ss.OriginalShiftDate)-1))) <> 0;

<强>更新

由于 @Dezza 表示您的查询不完整,因为您没有将列ss.IsWeekend设置为任何内容。

答案 1 :(得分:1)

Update ScheduledShifts ss LEFT JOIN Shifts s ON ss.ShiftID = s.ShiftID SET ss.IsWeekend WHERE (s.WeekendDays & (1 << (DAYOFWEEK(ss.OriginalShiftDate)-1))) <> 0;

简答:您的查询中单个等于,而不是双等号!

我之前从未在单个查询中使用左连接执行更新,因此我不知道这本身是否存在问题,但确实认为您的双等号是问题。

在脚本语言中,你的==是有效的,但在sql请求中,它是非法的。