下面这段sql运行结果我有一些疑问,为什么查询出来会有重复数据?
SELECT
n.*
FROM
sys_role_user RU
INNER JOIN sys_role_node RN
INNER JOIN sys_node n
WHERE
RU.role_id = RN.role_id
AND n.node_id = RN.node_id
AND RU.user_id = '1'
ORDER BY
n.node_code;
这是表结构和数据:
因为 RU.user_id = '1' `
sys_role_user RU 表 有两条数据
ru_id | role_id | user_id |
---|---|---|
1 | 2 | 1 |
12 | 1 | 1 |
条件 role_id [2, 1]
连上 RU.role_id = RN.role_id
sys_role_nod RN 表有下面数据
rn_id | role_id | node_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 1 | 3 |
4 | 2 | 1 |
5 | 2 | 2 |
6 | 2 | 3 |
7 | 2 | 4 |
条件 node_id [1,2,3,1,2,3,4]
连上 n.node_id = RN.node_id
sys_node n 表数据被查出、再排序,就是你截图里的执行结果了