mysql内部连接返回重复的行

时间:2014-09-08 18:46:55

标签: mysql join

Hello Developers我有两个表,通过mysql join组合,得到多行而不是单行,请解决这个问题,

tbltestdefault
-----------------------------------------------
ID   Test_ID           Description
-----------------------------------------------
1    117                  Blood Group   
2    117                  Rh Factor
3     4                   HB
4     4                     RBC
5     4                     ESR

tblreportdetail
-----------------------------------------------
ID   Test_Default_ID           Result_Value
-----------------------------------------------
1     117                               A
2     117                              Positive
3      4                              12
4      4                                15
5      4                                25

我的查询是

SELECT a.Description,
b.Result_Value
from tbltestdefault a
inner join tblreportdetail b on a.Test_ID  = b.Test_Default_ID

此查询返回多行

以上查询的结果

tblreportdetail
Description    Result_Value
HB          12
HB          15    
HB          25
HB          12
RBC         15
RBC         25
RBC         12
RBC         15
ESR         
ESR
ESR
ESR
Blood Group   
Blood Group   
Blood Group   
Blood Group   
Rh Factor
Rh Factor
Rh Factor
Rh Factor

2 个答案:

答案 0 :(得分:2)

他们不是愚蠢的。你得到了你所要求的。如果您将两个表格ID添加到查询中,您会发现它们并非如此,例如。

Description    Result_Value   a.id   b.id
HB             12             3      3
HB             15             3      4
HB             25             3      5
HB             12             4      3
HB             15             4      4
HB             25             4      5
etc...

答案 1 :(得分:1)

问:问题是为什么我会收到重复的行?

A:由于指定的JOIN谓词,在查询的结果集返回中生成具有相同内容的行,并且因为每个表中有多个行具有相同的{{ 1}} / Test_ID值。

根据显示的数据,查询的预期结果总共为13行。那是2 * 2 + 3 * 3.

两个Test_Default_ID = 117行中的每一行都匹配两个Test_ID = 117行,总共返回4行。

三个Test_Default_ID = 4行中的每一行都匹配三个Test_ID = 4行,总共返回了9行。

因为查询不包含结果集中行的任何唯一标识符,所以返回的某些行的内容是相同的。

这就是您观察查询返回的“重复行”的原因。

相关问题