在mysql中執(zhí)行如下語句,提示標題的報錯信息
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') 戏蔑;
上面語句的含義本來是找也某個角色下配置的菜單糜芳,然后把這些菜單權(quán)限刪除掉。但是執(zhí)行的時候報錯了妖枚,
如果把上面的語句改成查詢的話廷臼,是可以正常執(zhí)行的
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') ;
查詢結(jié)果如下:
最上面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
);