八、“where g.id=m.id”与“LEFT JOIN sys_menu m ON g.id=m.id”区别?

网友投稿 454 2022-11-25

八、“where g.id=m.id”与“LEFT JOIN sys_menu m ON g.id=m.id”区别?

八、“where g.id=m.id”与“LEFT JOIN sys_menu m ON g.id=m.id”区别?

(一)案例背景   有两张表:sys_group(用户组表)和sys_menu(菜单项表),他们还有个关联表:sys_group_menu(为用户组分配菜单表)。要求:需要查询得到所有的用户组(未分配菜单的用户组也需要查询出来)

(二)案例分析   按照我一开始的想法,只要将sys_group与sys_group_menu与sys_menu外键关联一下:“​​​where sys_group.id=sys_group_menu.group_id and sys_menu.id=sys_group_menu.menu_id​​​”即可,但是这样做的问题就是只能查询出已经分配了菜单项的用户组,即在“sys_group_menu”建立关系的用户组,但是我们还需要将未分配的用户组也查询出来,因为我们接下来需要为这些“未分配的用户组”分配菜单项。   要想解决这个问题,就必须利用“LEFT JOIN”的特性:保证主表始终出现在最终结果表中(a LEFT JOIN b,其中a就是主表)。   我们对开始想到的sql语句进行改造,保证不管用户组有没有对应的菜单选项,用户组都会被查询出来。改造的结果就是: 1.Mybatis映射

2.sql语句

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一、Element-UI之表单
下一篇:四、常用工具之Guava Cache
相关文章

 发表评论

暂时没有评论,来抢沙发吧~