日期:2014-05-17  浏览次数:20766 次

一个数据库查询的问题
表一
COLUMNS1               COLUMNS2               COLUMNS3
A                                     B                             C(列名)
1                                     2                             3
1                                     2                             6

表二
COLUMNS1               COLUMNS2               COLUMNS3
A                                     B                             E(列名)
1                                     2                             9

要求查询结果
COLUMNS1               COLUMNS2               COLUMNS3               COLUMNS4
A                                     B                             C                             E(列名)
1                                     2                             3                             9
1                                     2                             6                       (这里为空)
说明:两张表中哪张表数据多结果记录数就按多的,(比如说如果表1有3条记录,表2有2条记录,查询结果应该是3条,但表二中的COLUMNS3列值要为空)
不知道说明清楚没有。
在线等

------解决方案--------------------
select
a.COLUMNS1,a.COLUMNS2,a.COLUMNS3,b.COLUMNS3 as COLUMNS4
from
表一 a
left join
表二 b
on
a.COLUMNS1=b.COLUMNS1 and a.COLUMNS2=b.COLUMNS2
------解决方案--------------------
select
a.A,a.B,a.C,b.E
from
表一 a
left join
表二 b
on
a.A=b.Aand a.B=b.B

------解决方案--------------------
--如果只是需要一对一的对应,而两表之间没有字段直接对应关联:
select
a.A,a.B,a.C,b.E
from
(select rownum as id,* from 表一) a
left join
(select rownum as id,* from 表二) b
on
a.id=b.id