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
答案 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行。
因为查询不包含结果集中行的任何唯一标识符,所以返回的某些行的内容是相同的。
这就是您观察查询返回的“重复行”的原因。