今天碰到一个问题
delete from sys_menu_role mr
where mr.role_id = #{roleId,jdbcType=BIGINT}
and mr.menu_id in
(select
m.id
from sys_menu m
where m.parent_id = #{menuId,jdbcType=BIGINT})
报了sql语句错误 1064 - You have an error in your SQL syntax;
查阅资料后发现,原来是因为给sys_menu_role 表取了别名。
那么执行delete的时候就找不到表了。所以需要在delete 和 from 直接加入 这个别名
delete mr from sys_menu_role mr
where mr.role_id = #{roleId,jdbcType=BIGINT}
and mr.menu_id in
(select
m.id
from sys_menu m
where m.parent_id = #{menuId,jdbcType=BIGINT})