我试图在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条记录。有什么问题,我该如何解决?
一旦您在WHERE引用正确表的子句中放置一个条件,并且不容纳NULL连接失败时将产生的s,就将其(有效地)转换为一个INNER JOIN。
WHERE
NULL
INNER JOIN
尝试:
where B.fixed = 'b580' OR B.fixed IS NULL
或将此条件添加到的ON子句中JOIN。
ON
JOIN