如何在不从table1中删除数据的情况下在sql中连接表

Mow*_*gli 1 sql oracle oracle10g crystal-reports

列D中的每个人都有数字.

我需要从第二张桌子上找到一个人的姓氏.

select
    a.TIME_STAMP,
    a.RDATE,
    a.TYPE,
    a.PERSON
from table1 a
Run Code Online (Sandbox Code Playgroud)

一张图片http://i50.tinypic.com/6t3iur.jpg table2有人姓,字段最后叫

我试过了

select
    a.TIME_STAMP,
    a.RDATE,
    a.TYPE,
    a.PERSON,
    b.last,
from table1 a, table b 
where a.PERSON = b.PERSON 
Run Code Online (Sandbox Code Playgroud)

并通过从结果中删除ABC_CHANGE来输出以下内容

b pic http://i45.tinypic.com/295uw3n.jpg

如何修复查询,以便它不会删除ABC_CHANGE.

我在水晶报告中这样做只是为了获取额外信息,但它在SQLPlus中也是如此.

Ant*_*ist 5

如果您想要表A中的所有行,即使表B中没有匹配项,您也需要使用LEFT OUTER JOIN:

select
    a.TIME_STAMP,
    a.RDATE,
    a.TYPE,
    a.PERSON,
    b.last,
from table1 a
LEFT OUTER JOIN table b ON a.PERSON = b.PERSON 
Run Code Online (Sandbox Code Playgroud)

  • @EricB.问题是"我如何修复查询,以便它不会删除ABC_CHANGE." 所以我回答了那一部分.当匹配时,他将获得该人的姓氏,并且在没有匹配时获得没有姓氏的行.这是他所能期待的最好的. (2认同)