delete from删除几张表关联

在删除时:

delete  from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
		where m.sys_type=1 and s.role_id in
		~<~foreach item="roleId" collection="array" open="(" separator="," close=")">
			#{roleId}
		~<~/foreach>

这样会报错的。
而我没看出来哪里有错,改成查询:

select * from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
		where m.sys_type=1 and s.role_id in
		<foreach item="roleId" collection="array" open="(" separator="," close=")">
			#{roleId}
		</foreach>

这样是正确的。
那么问题呢?
原因是多张表关联时要指明删除的是哪张表,把别名写在delete后面。

delete s from sys_role_menu s left join sys_menu m ON s.menu_id = m.menu_id
		where m.sys_type=1 and s.role_id in
		<foreach item="roleId" collection="array" open="(" separator="," close=")">
			#{roleId}
	</foreach>
	这样就可以了。
发布了67 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/m0_37635053/article/details/103037847