当Left join 1对多时?

场景

一个起租单可能对应多条附件,通过起租单id关联
Select 起租单id,附件id from 起租单表 left join 附件表 on 起租单id = 附件id

原以为left join出现1对多时,左表只会select出一条数据,但是现实是会造成左表重复数据的产生。

修正方法:不要求查询右表所有数据时,用distinct、group by 对右表进行处理再关联;
需要展示时,先对右表进行处理,将字段合并

修改前

1
$ LEFT JOIN dat_attachment da ON tr.rentinformation_id = da.business_id AND da.business_type = "dat_mobileRent"

修改后

1
2
$ LEFT JOIN (SELECT distinct business_id FROM dat_attachment WHERE business_type = "dat_mobileRent") da
on tr.rentinformation_id = da.business_id
文章作者: Binge Huang
文章链接: http://yoursite.com/2019/10/29/left-join/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Binge
打赏
  • 微信
  • 支付寶