"You have an error in your SQL syntax; check the manual that corresponds to your MySQL"

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL"

我在这里失去了理智,试图弄清楚这一点。这是 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 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '== s.ShiftID SET ss.IsWeekend WHERE (s.WeekendDays & (1 << (DAYOFWEEK(ss.`' at line 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 设置为任何内容。

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 请求中,它是非法的。