【发布时间】:2021-03-07 02:20:03
【问题描述】:
我的数据库 TEST 下有 4 个表:
- 用户
- USER_GROUP_PERMISSION
- PERMISSION_TYPE
- 组
当我使用内连接和交叉连接而不是返回 520 行来连接上述表时,它返回 2600 行,大部分值重复
我需要一个没有重复的最终输出
查询:
select user.*
from TEST.USER user
inner join TEST.USER_GROUP_PERMISSION user_grp1
on user.APPLICATION_ID = user_grp1.APPLICATION_ID
inner join TEST.PERMISSION_TYPE permission2_
on user_grp1.PERMISSION_TYPE_ID = permission2_.PERMISSION_TYPE_ID
inner join TEST.GROUPS groups
on user_grp1.GROUP_ID = groups.GROUP_ID
cross join TEST.PERMISSION_TYPE permission4_
where user_grp1.PERMISSION_TYPE_ID = permission4_.PERMISSION_TYPE_ID
and groups.GROUP_ID in (101)
and permission4_.PERMISSION_TYPE in (0 , 1 , 2 , 3 , 4 , 5 , 6)
and user.NAME = 'ROBIN'
and user.ACTIVE = '1'
order by upper(user.DISPLAY_VERSION) asc
【问题讨论】:
-
如果您
CROSS JOIN,您希望发生什么?CROSS JOIN将现有数据集中的每一行“连接”到连接表中的每一行。如果您得到“重复”,那么您的ON子句或JOIN类型是错误的。但如果没有样本数据、预期结果或您试图实现的逻辑,我们无法告诉您更正是什么。
标签: sql sql-server join duplicates