【问题标题】:mysql inner join returns duplicate rowsmysql内部连接返回重复的行
【发布时间】:2014-09-08 18:46:54
【问题描述】:

开发者您好,我有两张表,通过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

【问题讨论】:

  • 您有什么想问的吗?还是您只是提供状态报告?
  • 问题是为什么我得到重复的行?

标签: mysql join


【解决方案1】:

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

答: 由于指定的 JOIN 谓词,并且每个表中有多个行具有相同的 @987654321,因此查询返回的结果集中正在生成具有相同内容的行@/Test_Default_ID 值。

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

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

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

由于查询不包括结果集中行的任何唯一标识符,因此返回的某些行的内容是相同的。

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

【讨论】:

  • 您能帮我如何在这两个表之间添加唯一标识符吗?
【解决方案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...

【讨论】:

  • 不,我只有 Test_ID 和 Test_Default_ID 没有唯一 ID
猜你喜欢
  • 2018-06-14
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2019-03-27
  • 2021-12-05
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多