我有两张桌子

组:

id  group_name
--------------
1   G1
2   G2
3   G3

权限:

PersId  Groups_id
-----------------
10001   1
10001   2
10002   2
10003   3

这意味着10001可以访问G1和G2,10002可以访问G2和G3.

我想编写一个查询来查找例如10001可以访问的组名.

我已经编写了如下的SQL查询:

SELECT * 
FROM Permissions 
WHERE PersId.id = [p_id]

但是这个查询只返回1和2.我想要返回G1和G2

推荐答案

您可以连接两个表以获得正确的结果,如下所示:

SELECT Permissions.persid,group_name 
FROM       Permissions 
INNER JOIN Groups 
        ON Permissions.Groups_id = Groups.Id
WHERE Permissinos.PersId = 10001

此查询将返回以下输出:

persid group_name
10001 G1
10001 G2

Sql相关问答推荐

在postgresql中使用来自另一个字段的日期名称作为JSONB查询中的关键字

SUM(条件)在Oracle?

将有界时间周期作为阶跃函数,其中周期开始返回1,周期结束返回0

SQL -滞后于上一个非重复值

如何更新SQLite数据库中的表?

每组显示一行(表1中的分组值),表2中的不同列表用逗号分隔

SQL SELECT MOST NEST TIMESTAMP BEAT ORDER

如何实现同一列的递归计算?

根据开始日期和结束日期的差异计算每天的计费

如果另一个表中不存在值列,则插入失败

SQL按组 Select 最小值,当值不存在时为Null

如何为 ActiveRecord 联接应用附加条件

使用SQLAlchemy和Postgres数据库创建新行时,为什么我的创建日期比更新日期晚?

基于 Snowflake 的最大值创建新列

函数调用作为插入值语句中的参数

SQL Select 最大并获取列名

如何将多行的查询结果合并为一行

条件意外地显着降低性能的地方

查找具有相同连接列数据的所有记录

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它