1 sql
今天,我的老板告诉下面的SQL查询并没有解释它就出去了.它的工作性很好.但我想知道它的工作方式.
SELECT NAME
FROM PERMISSIONTOKENS
WHERE ID IN (SELECT TOKENID
FROM ROLETOKENASSOCIATION
WHERE ROLEID = '1');
Run Code Online (Sandbox Code Playgroud)
这里有两个查询.
内部查询:
SELECT TOKENID FROM ROLETOKENASSOCIATION WHERE ROLEID = '1'
Run Code Online (Sandbox Code Playgroud)
将得到的所有的TOKENID期从ROLETOKENASSOCIATION有一个ROLEID的1.
外部查询:
SELECT NAME FROM PERMISSIONTOKENS WHERE ID IN(...)
Run Code Online (Sandbox Code Playgroud)
这将获得PERMISSIONTOKENS具有内部查询结果集中的ID的所有名称.
IN如果你不喜欢它的语法,你可以用连接而不是使用连接来重写它IN.
这是一个子查询.
基本上内部SELECT检索令牌ID,然后将其反馈到外部SELECT查询中.您也可以使用以下方法实现相同目的INNER JOIN:
SELECT name
FROM PERMISSIONTOKENS pt
INNER JOIN ROLETOKENASSOCIATION rta ON rta.TOKENID = pt.ID
WHERE rta.ROLEID = '1';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |