我正在尝试对双重 INNER JOIN
执行 UPDATE
,但出现以下错误:
#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 'FROM pro_users AS u INNER JOIN cAlerts AS c ON c.user_id = u.user_id I' at line 3
这是我的 mysql 代码:
UPDATE u
SET u.active_member = 0
FROM pro_users AS u
INNER JOIN cAlerts AS c
ON c.user_id = u.user_id
INNER JOIN srAlerts AS s
ON s.user_id = c.user_id
WHERE c.status=0
AND s.active=0
AND u.active_member = 1
你能发现我的错误吗?
最佳答案
这将是执行更新的 ISO/ANSI SQL 方式:
update pro_users u set active_member = 0
where u.active_member = 1
and exists ( select *
from cAlerts c
where c.user_id = u.user_id
and c.status = 0
)
and exists ( select *
from srAlerts sr
where sr.user_id = u.user_id
and sr.active = 0
)
据我所知,update
语句中的 from
子句(有或没有连接)是 Microsoft/Sybase Sql Server 的异常。
编辑说明:在 http://dev.mysql.com/doc/refman/5.0/en/update.html 的 mySql 手册中进行了一些翻找。一些 SQLFiddling 说这会起作用:
update pro_users u
join cAlerts c on c.user_id = u.user_id and c.status = 0
join srAlerts sr on sr.user_id = u.user_id and sr.active = 0
set active_member = 0
where u.active_member = 1
关于mysql - UPDATE 和双重 INNER JOIN 引发 mysql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18496546/