你好如何从两张表中获取
| id | name |
|----|-------|
| 1 | John |
| 1 | Bruce |
| 1 | Tom |
和
| id | goal |
|----|-------|
| 1 | 11 |
| 1 | 22 |
选择
之类的结果 | id | name |goal |
|----|------|------|
| 1 |John | 11 |
| 1 |Bruce | 22 |
| 1 |Tom | |
我尝试了加入和联盟,但我没有得到任何结果,请帮忙!使用oracle pl / sql。
答案 0 :(得分:1)
这有点棘手。您没有用于生成值的连接键。事实上,实际上没有办法对齐"这样的值,因为SQL表本质上是无序的。
您可以做的一件事就是生成一个行号并将其用于join
。一种方法是:
select id, max(name) as name, max(goal) as goal
from ((select id, name, NULL as goal, rownum as rn
from t1
) union all
(select id, NULL, goal, rownum as rn
from t2
)
) t12
group by id, rn;
注意:两列中的订单相对于彼此是任意的,除非您有一个指定订单的列。