INNER JOIN 解疑

起因:
在数据库中有两张表:
LFA1:供应商主数据 (一般地区) 数据量:1090
LFB1:供应商主数据 (公司代码) 数据量:1162
现在要查找供应商信息,两个表做表连接,查找供应商的相关信息,SQL语句如下:

[code="java"]SELECT B.LIFNR,B.BUKRS
  FROM [Test].[dbo].[LFA1] AS A
INNER JOIN [Test].[dbo].[LFB1] AS B
ON A.LIFNR = B.LIFNR

查找出来的结果如下:

 INNER JOIN 解疑

按照inner join 的功能来说查找出来的数据应该小于两表中数据链较小的那张,但是现在数据与多的那张表相同。

原因:经过排查,发现原因主要在与LFB1虽然有1162条数据但是其中LIFNR有重复,就是一个供应商对对多家公司供应,所以应该是LIFNR的联合主键,但是我们做表连接设定的条件是依据LIFNR,LFB1的数据每一条在LFA1中都能找到对应,所以查找出来的结果集就是1162条数据。

 

发现这个问题是在ABAP系统中,在表的界面查找导入LIFNR,查出来1079条数据,但是XML返回1162条,应该是SAP的表界面查找默认是去重复项的。

表界面查找对LIKE关键字的处理方法:选择“=”value*

界面查找两个字段的值是AND关系

你可能感兴趣的:(sql,xml)