我有一个oracle sql查询
select
distinct
tab1.col1,
tab2.col1
from
table1 tab1
join table2 tab2 on tab1.col1 = tab2.col1
在这里,我得到了与不同价值观相同的预期。
For Example : The result rows are
1 2
3 4
5 6
现在我想为table3添加一个连接。所以我的sql是
select
distinct
tab1.col1,
tab2.col1,
tab3.col1
from
table1 tab1
join table2 tab2 on tab1.col1 = tab2.col1
join table3 tab3 on tab1.col1 = tab3.col1
问题在于表3返回的是多个值。 这导致基于table3的重复行。
For Example : The result rows are
1 2 4
1 2 5
3 4 1
3 4 2
5 6 3
(此处如果您注意到第1行和第2行是重复的,3& 4是重复的)
我想要做的是加入table3我想要获取 第一次出现的行。
答案 0 :(得分:4)
这对你有用!
select
distinct
tab1.col1,
tab2.col1,
MIN(tab3.col1)
from
table1 tab1
join table2 tab2 on tab1.col1 = tab2.col1
join table3 tab3 on tab1.col1 = tab3.col1
GROUP BY tab1.col1, tab2.col1
编辑:思考,
我假设第3列是一个不断增加的整数,在这种情况下这是有效的。您可以使用日期列准确定义聚合,以获得“第一次出现行”。
答案 1 :(得分:1)
select
distinct
tab1.col1,
tab2.col1,
t3.col1
from
table1 tab1
join table2 tab2 on tab1.col1 = tab2.col1
join (select distinct col1 from table3) t3 on tab1.col1 = t3.col1