首页 > 解决方案 > Oracle sql join 与 3 个表

问题描述

lk_state 表

id  desc
MD  Maryland
FL  Florida
VA  Virginia
NY  NewYork
NJ  NewJersy
CA  California

用户表

user_ID Name    Active  State
01      AAA     1       MA  
02      BBB     1       MD
03      CCC     1       CA
04      DDD     1       NY
05      EEE     1       NJ
06      FFF     1       FL
07      GGG     1       FL

users_groups 表

id  group
01  10
02  20
03  20
04  30
05  20
06  10
07  20

我想加入这些表,这些表将为我提供 lk_state 表中的状态输出。条件是仅显示用户属于角色=20 的那些状态

输出应该是

id  desc
MD  Maryland
FL  Florida
NJ  NewJersy
CA  California

我尝试加入,但它为每个用户和组提供了多行。请帮助我根据需要显示一个 oracle sql。

标签: javasqloraclejoinleft-join

解决方案


您可以使用exists和相关的子查询:

select s.*
from lk_states s
where exists (
    select 1
    from users u
    inner join user_groups ug on ug.id = u.user_id
    where u.state = s.id and ug.group = 20
)

推荐阅读