mysql left join 右表存在重复数据,怎么处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql left join 右表存在重复数据,怎么处理相关的知识,希望对你有一定的参考价值。

使用 left join 是在 两个表连接之后 保留左表有数据但是右边为空的数据
也就是说右边有重复数据(多条数据对应左边表一条数据)
那么会全部保留。
如果你怕记录不显示 那么大可不必担心
如果你不想记录都显示就只能通过聚合函数等将重复的记录合并在一起
比如count(右边的id)来显示重复的个数啊
或者用group_concat(右边的某个字段)将重复的记录转化为一个数据
参考技术A 使用 left join 是在 两个表连接之后 保留左表有数据但是右边为空的数据
也就是说右边有重复数据(多条数据对应左边表一条数据)
那么会全部保留。
如果你怕记录不显示 那么大可不必担心
如果你不想记录都显示就只能通过聚合函数等将重复的记录合并在一起
比如count(右边的id)来显示重复的个数啊
或者用group_concat(右边的某个字段)将重复的记录转化为一个数据

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 是说不准查出那条来的。

我就是这样解决的。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!https://www.cnblogs.com/captainbed





以上是关于mysql left join 右表存在重复数据,怎么处理的主要内容,如果未能解决你的问题,请参考以下文章

left join 右表多条数据重复

MySql 之 left join 查询结果

mysql left join 右表数据不唯一的情况解决方法

MySQL # left join 语句,对右表的限制条件使用注意问题

a表 left join b表 为啥 b表里的的数据没了

如何在没有重复的情况下在 hive 中执行 LEFT OUTER JOIN 以仅检查右表中的一个值?