admin

sql左联接返回

sql

我试图在2个表上运行左联接。我没有分组依据,而我所拥有的唯一条件是在第二张桌子上。但是,返回的行少于第一个表。左联接不是要从第一个表中带走所有数据吗?这是我的SQL:

select * 
  from tbl_a A left join tbl_b B
     ON
       A.Cnumber=B.Cnumber
       and A.CDNUmber=B.CDNumber
       and abs(A.duration - B.Duration)<2
       and substr(A.text,1,3)||substr(A.text,5,8)||substr(A.text,9,2)=substr(B.text,1,8)
where B.fixed = 'b580'

表A中有140,000条记录,但返回的结果少于100,000条记录。有什么问题,我该如何解决?


阅读 39

收藏
2021-06-07

共1个答案

admin

一旦您在WHERE引用正确表的子句中放置一个条件,并且不容纳NULL连接失败时将产生的s,就将其(有效地)转换为一个INNER JOIN

尝试:

where B.fixed = 'b580' OR B.fixed IS NULL

或将此条件添加到的ON子句中JOIN

2021-06-07