如何从MySQL表中选择/匹配?

时间:2014-03-02 02:55:28

标签: mysql sql database

我有下表:

People
---------
ID | Name
---------
 1 | John
 2 | Sam

我有另一张桌子:

Permissions
-----------
ID | Perm
-----------
 1 | View
 2 | Edit
 3 | Delete

这两个表在第三个表中链接:

UserPermissions
----------------------
ID | User | Permission
----------------------
 1 |   1  |  1 (View)
 2 |   1  |  3 (Delete)
 3 |   2  |  1 (View)

我正在尝试选择一个“总”权限类型表,如果我想获得用户的权限(让我们说用户2(Sam)),我会得到下表:

UserPermissions
------------------
Permission | User
------------------
 1 (View)  |  2
 2 (Edit)  | NULL (Or some other nullish value)
 3 (Delete)| NULL

我最近才开始使用MySQL,而且我不知道我应该尝试使用哪些搜索字词来获取类似查询的示例。有谁知道我应该搜索什么类型的查询/实现这个的方法?

2 个答案:

答案 0 :(得分:1)

如果您想为一位用户执行此操作,则需要left outer join

select p.*, up.user;
from Permissions p left outer join
     UserPermissions up
     on p.Permission = up.Permission and
        up.User = 2;

这适用于一个用户。

答案 1 :(得分:1)

听起来你只是在寻找OUTER JOIN

SELECT P.Id, P.Perm, UP.Id User
FROM Permissions P
   LEFT JOIN UserPermissions UP ON P.Id = UP.Permission