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

关于mysql - “您的SQL语法有误;查看与您的MySQL相对应的手册”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35989718/

10-12 18:06