我有以下的senario
table1 - 拥有1001(主键)的1条记录
table2 - 具有相同id(1001)的3条记录 - 不作为主键
table3 - 具有相同id(1001)的3条记录 - 不作为主键
前两个表的连接返回3行(很好)。但是,如果我加入table3,那么它将返回9行。我知道如何加入工作和结果。
我的结果只需要3行。如下所示
id name age sex city
1001 Jhon 20 A Z
1001 Jhon 20 B Y
1001 Jhon 20 C X
答案 0 :(得分:0)
This query可以做你要求的。要更改Table2和Table3之间的组合,您可以处理两个ORDER BY子句。无论如何真的很奇怪!你确定你做得对吗?
with ord_t2 as (
select idt1 as id, sex, row_number() over(partition by idt1 order by sex) as ord_no
from table2 t2
), ord_t3 as (
select idt3 as id, city, row_number() over(partition by idt3 order by city) as ord_no
from table3 t3
), t2_x_t3 as (
select id, sex, city
from ord_t2
natural full outer join ord_t3
)
select *
from Table1
natural left join t2_x_t3