知虚 2022-10-31 23:28 采纳率: 80%
浏览 17
已结题

SQL运行结果有疑问

下面这段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;

这是表结构和数据:



img

img

img

img

  • 写回答

1条回答 默认 最新

  • 骆言 2022-11-01 08:45
    关注

    因为 RU.user_id = '1' `
    sys_role_user RU 表 有两条数据

    ru_idrole_iduser_id
    121
    1211

    条件 role_id [2, 1]
    连上 RU.role_id = RN.role_id
    sys_role_nod RN 表有下面数据

    rn_idrole_idnode_id
    111
    212
    313
    421
    522
    623
    724

    条件 node_id [1,2,3,1,2,3,4]
    连上 n.node_id = RN.node_id
    sys_node n 表数据被查出、再排序,就是你截图里的执行结果了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 专家修改了标签 11月1日
  • 已采纳回答 11月1日
  • 创建了问题 10月31日