在这里失去理智,试图弄清楚这一点。这是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。)
答案 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请求中,它是非法的。