美文网首页
mysql错误处理:SQL错误(1093):You can't

mysql错误处理:SQL错误(1093):You can't

作者: 春风花草 | 来源:发表于2022-06-04 17:03 被阅读0次

在mysql中执行如下语句,提示标题的报错信息

DELETE FROM sys_role_menu  WHERE menu_id IN  
( SELECT menu_id FROM sys_role sr JOIN sys_role_menu srm ON (sr.role_id=srm.role_id) WHERE sr.role_key='xxx') ;

上面语句的含义本来是找也某个角色下配置的菜单,然后把这些菜单权限删除掉。但是执行的时候报错了,
如果把上面的语句改成查询的话,是可以正常执行的

SELECT * FROM sys_role_menu t WHERE menu_id IN  
( SELECT menu_id FROM sys_role sr JOIN sys_role_menu srm ON (sr.role_id=srm.role_id) WHERE sr.role_key='xxx') ;

查询结果如下:


image.png

最上面delete语句的错误原因是子查询中也含有sys_role_menu表,为了解决这个问题,可以在子查询中再加一层select查询,如下:

DELETE FROM sys_role_menu t WHERE t.menu_id IN 
(   SELECT a.menu_id FROM 
    (   SELECT srm.menu_id FROM sys_role sr JOIN sys_role_menu srm ON (sr.role_id=srm.role_id) WHERE sr.role_key='interviewer')
    AS a
);

具体可参考mysql中delete from where子查询的限制介绍

相关文章

网友评论

      本文标题:mysql错误处理:SQL错误(1093):You can't

      本文链接:https://www.haomeiwen.com/subject/sttlmrtx.html