Left join中查询结果比左表数据量多
问题:在left join 的时候会出现查询结果比左表数据多的问题原因:应为左表的一个值,对应右表中一个以上的值,sql无法分辨,只能将所有匹配上的都现实在结果中例:a_table 表IdName1huhu2lili3wuwub_table表Id...
问题:
在left join 的时候会出现查询结果比左表数据多的问题
原因:
应为左表的一个值,对应右表中一个以上的值,sql无法分辨,只能将所有匹配上的都现实在结果中
例:
a_table 表
|
Id |
Name |
|
1 |
huhu |
|
2 |
lili |
|
3 |
wuwu |
b_table表
|
Id |
Dt |
Zt |
|
1 |
回家 |
运行 |
|
1 |
空 |
异常 |
|
2 |
玩耍 |
运行 |
|
3 |
休息 |
运行 |
SELECT
a.id,
a.NAME,
b.dt
FROM
a_table a
LEFT JOIN
b_table b
ON
a.id = b.id;
结果:
|
1 |
huhu |
回家 |
|
1 |
huhu |
空 |
|
2 |
lili |
玩耍 |
|
3 |
wuwu |
休息 |
解决办法:
结可以根据b_table表中状态(zt)或者是其他能去重的字段先将b_table表去重
select id,dt,zt from b_talbe where zt = '运行';
|
Id |
Dt |
Zt |
|
1 |
回家 |
运行 |
|
2 |
玩耍 |
运行 |
|
3 |
休息 |
运行 |
在这样的结果下,再次运行上面的sql,就会变为正常
|
1 |
huhu |
回家 |
|
2 |
lili |
玩耍 |
|
3 |
wuwu |
休息 |
结论:
使用left join 时,右边的表应中的数据要保持与左边只有一条数据对应/与左边的表无数据对应
换句话说,右边表数据应该少于左边表
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)