mysql根据某个重复的字段,只取出list中的一条

mysql根据某个重复的字段,只取出list中的一条

场景说明:在一张数据库表中存储了题目的详细信息,另一张表是题目所对应的标签,是一个一对多的场景。现在的需求是只取出一个对象即可。即只需取出一个标签内容和题目所有内容来封装对象即可。

举个例子:

有一个表a如下:

idname
1张三
2李四

有另一个表b

idaidimg
11这是第一张图片
21这是第二张图片
32这是第三张图片
42这是第四张图片

此时,你使用查询语句select A.name,B.img from a A left join b B on B.aid=A.id,此时查询出来的结果对应如下:

在这里插入图片描述
现在要求,只取出一个img字段即可,即取出的name对应张三的只需要一个img即可(这是第一张图片或第二账图片),取出的李四对应的img为第三张或者第四张的其中一个即可。

解决方案:利用聚合函数限制结果为一条便可,可以将查询的sql语句修改为select A.name,max(B.img) as img from a A left join b B on B.aid=A.id group by A.name;,此时查出来的结果为:

在这里插入图片描述

满足要求。

花絮:刚开始使用distinct字段来限制某一个字段的重复,但当取出来的是两个字段时,也就是name和img时,它是同时作用两个字段,也就是必须name和img的值都相同的才会被排除,因此不可满足业务要求

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值