有2个表
表A:TA
字段
C1,C2,C3
值
a1,b1,c1
a2,b2,c2
--------------------------
表B:TB
字段(C1是表TA的外键)
C1,C4,C5
值
a1,d1,e1
a1,d2,e2
a2,d3,e3
a2,d4,e4
---------------------------
我现在想用一个查询语句查出下面的数据:
a1,b1,c1,null,null
null,null,null,d1,e1
null,null,null,d2,e2
a2,b2,c2,null,null
null,null,null,d3,e3
null,null,null,d4,e4
表A:TA
字段
C1,C2,C3
值
a1,b1,c1
a2,b2,c2
--------------------------
表B:TB
字段(C1是表TA的外键)
C1,C4,C5
值
a1,d1,e1
a1,d2,e2
a2,d3,e3
a2,d4,e4
---------------------------
我现在想用一个查询语句查出下面的数据:
a1,b1,c1,null,null
null,null,null,d1,e1
null,null,null,d2,e2
a2,b2,c2,null,null
null,null,null,d3,e3
null,null,null,d4,e4
null as c4,
null as c5,
A.c1
from A
union all
select null as c1,
null as c2,
null as c3,
B.c4,
B.c5,
B.c1
from B
order by 6;
C1 C2 C3 C4 C5 C1
-- -- -- -- -- --
a1 b1 c1 a1
d1 e1 a1
d2 e2 a1
a2 b2 c2 a2
d3 e3 a2
d4 e4 a26 rows selected
2 (
3 C1 VARCHAR2(10),
4 C2 VARCHAR2(10),
5 C3 VARCHAR2(10)
6 )
7 /
Table created
SQL> create table TEST_2
2 (
3 C1 VARCHAR2(10),
4 C2 VARCHAR2(10),
5 C3 VARCHAR2(10)
6 )
7 /
Table created
SQL> insert into test_1 select 'a1','b1','c1' from dual;
1 row inserted
SQL> insert into test_1 select 'a2','b2','c2' from dual;
1 row inserted
SQL> commit;
Commit complete
SQL> insert into test_2 select 'a1','d1','e1' from dual;
1 row inserted
SQL> insert into test_2 select 'a1','d2','e2' from dual;
1 row inserted
SQL> insert into test_2 select 'a2','d3','e3' from dual;
1 row inserted
SQL> insert into test_2 select 'a2','d4','e4' from dual;
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test_1;
C1 C2 C3
---------- ---------- ----------
a1 b1 c1
a2 b2 c2
SQL> select * from test_2;
C1 C2 C3
---------- ---------- ----------
a1 d1 e1
a1 d2 e2
a2 d3 e3
a2 d4 e4
SQL>
SQL> SELECT T1.C1, T1.C2, T1.C3, T2.C2, T2.C3
2 FROM TEST_1 T1
3 FULL OUTER JOIN TEST_2 T2 ON T1.C2 = T2.C2 AND t1.c3=t2.c3
4 /\
C1 C2 C3 C2 C3
---------- ---------- ---------- ---------- ----------
a1 b1 c1
a2 b2 c2
d3 e3
d2 e2
d4 e4
d1 e1
6 rows selected
SQL>
但我想出成这样的顺序:
a1 b1 c1 a1
d1 e1 a1
d2 e2 a1
a2 b2 c2 a2
d3 e3 a2
d4 e4 a2
也就是先出A表的一条数据紧接着出B表关联的相应数据,然后再出A表的下一条数据,再出B表关联的相应数据,以此类推