mysql left join右边有多条_left join 右表多条数据重复

mysql的left join从两个表中联合查询数据,以左表为主,右表为辅。如果左表中有的内容右表中没有,则用null填充。这是一般的常见的解释。也很容易理解。但是在做右表的多数据查询的时候就得写条件了。

我写一个产品-产品图片的分页过程中需要查出一个图片即可。但是在用mysql的left join中,左表为product,键为pid。右表为image主键为imageid,外键为pid。

查询语句入下

select product.* from product left join image using(pid);

当输出结果时发现,当一个产品数据对多个图片数据时,产品会出现重复。这就是遇到的麻烦,查询网络上有人有这样的问题,

但是都是通过分步来解决,即查询完毕产品数据,然后循环的时候再进行图片查询并查询1个输出。

我想了半天,采用了另一种方法解决,left join 右表多条数据的情况,根据上面的我写了如下sql语句

select product.*,foraspcn.image from product left join(select imagename,pid from image group by pid) as foraspcn

using(pid);

这样查询出来就是一个产品对应一个图片

即,在查询右连接的表时,查询的就是1条数据,通过groupby 来进行数据检索。当然这样的group by 是说不准查出那条来的。

我就是这样解决的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值