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 是说不准查出那条来的。
我就是这样解决的。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed
原文地址:https://www.cnblogs.com/sjwudhwhhw/p/10156942.html