加入DISTINCT

pan*_*fel 0 sql oracle join distinct

我在Oracle SQL中有一个问题.

为了简化我的问题,假设我有两个表:

TAB1:                TAB2:
Usr  Fruit            Fruit  Calories
1    A                A      100
1    A                B      200
1    A                C      150
1    C                D      400
1    C                E      50
2    A
2    A
2    E
Run Code Online (Sandbox Code Playgroud)

在TAB1中有双重条目非常重要.现在我想知道usr的卡路里1.但是加入两个表

SELECT TAB2.calories from TAB1
JOIN TAB2 ON TAB1.Fruit = TAB2.Fruit
WHERE TAB1.Usr = 1;
Run Code Online (Sandbox Code Playgroud)

我得到双重条目的双重结果.我当然可以在标题中使用distinct,但是有可能直接在连接中区分值(到A和C)吗?我相信这会改善我(更大)的表现.

谢谢!

Ham*_*one 5

我是半连接的忠实粉丝.对于这么小的表格来说,这没关系,但对于较大的表格,它可以产生很大的不同:

select
  tab2.calories
from tab2
where exists (
  select null
  from tab1
  where tab1.fruit = tab2.fruit and tab1.usr = 1
)
Run Code Online (Sandbox Code Playgroud)