首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql连接重复

Mysql连接重复
EN

Stack Overflow用户
提问于 2012-07-05 02:31:30
回答 1查看 70关注 0票数 0

我正在创建一个cms,我有一个叫做menus的表格。

代码语言:javascript
复制
Menus

MenuID | MenuName
1        Home
2        users
3        email
4        system

我有另一个表来控制用户对这些菜单的访问

代码语言:javascript
复制
call user_menu_access
MenuID | UserID
1           1
2           1

我像这样做了一个左连接

代码语言:javascript
复制
SELECT * 
FROM menus
LEFT JOIN user_menu_access 
    ON menus.MenuID = user_menu_access.MenuID 
WHERE UserID = 1

我的结果集复制了行,因为我必须为1和2赋值,所以我希望结果集如下所示

代码语言:javascript
复制
MenuID  | UserID
1           1
2           1
3           NULL
4           NULL
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 02:40:12

您需要将条件移动到ON子句中:

代码语言:javascript
复制
SELECT menus.menuid, userid 
FROM menus
LEFT JOIN user_menu_access 
    ON menus.MenuID = user_menu_access.MenuID 
    AND UserID = 1

查看这个查询executing (给出了您所要求的结果) here

这样做的原因是,WHERE子句在连接发生后过滤行集,但是因为您正在执行left join,所以对于没有任何用户访问权限的菜单,user_menu_access表的所有列都是null,所以您的条件对这些行不为真。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11333980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档