当前位置: 代码迷 >> Oracle开发 >> 逆天了!极端容易的left join 返回数据不对
  详细解决方案

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

热度:80   发布时间:2016-04-24 07:03:10.0
逆天了!极端简单的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
  相关解决方案