读书人

逆天了!极端容易的left join 返回数据

发布时间: 2013-06-19 10:26:41 作者: rapoo

逆天了!极端简单的left join 返回数据不对?
本帖最后由 Leedye123 于 2013-06-02 22:03:43 编辑 A 表共有2条ID不同的数据,与B表关联后, 居然返回多于2条数据,是怎么回事?

如:表A:

Aid Aname
1 1A
2 2A

表B:


Bid Bname
1 1B
2 2B
3 3B


进行左联接:

SELECT a.* from A a Left join B b on a.Aid =b.Bid

左联接后返回结果:

Aid Aname Bid Bname
1 1A 1 1B
2 2A 2 2B
3 3B

怎么回事呢?
[解决办法]
多检查自己写的脚本,就知道是怎么回事了

像你写的查询语句绝对不会返回你写的结果的
查询a.* 怎么会有Bid Bname
[解决办法]
对于楼主的这个问题,我只能说:
无图无真相
[解决办法]
一定是楼主打开的方式不对,这不可能
[解决办法]
SQL> create table b(bid int,bname varchar2(20));

表已创建。

SQL> insert into a select 1,'1a' from dual;

已创建 1 行。

SQL> insert into a select 2,'2a' from dual;

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into b select 1,'1b' from dual;

已创建 1 行。

SQL> insert into b select 2,'2b' from dual;

已创建 1 行。

SQL> insert into b select 3,'3b' from dual;

已创建 1 行。

SQL> commit;

SQL> select * from a;

AID ANAME
---------- --------------------
1 1a
2 2a

SQL> select * from b;

BID BNAME
---------- --------------------
1 1b
2 2b
3 3b

SQL> select a.* from a left join b on a.aid=b.bid;

AID ANAME
---------- --------------------
1 1a
2 2a

读书人网 >oracle

热点推荐