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

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

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

举个例子:

有一个表a如下:

id name
1 张三
2 李四

有另一个表b

id aid img
1 1 这是第一张图片
2 1 这是第二张图片
3 2 这是第三张图片
4 2 这是第四张图片

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

mysql根据某个重复的字段,只取出list中的一条
现在要求,只取出一个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;,此时查出来的结果为:

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

满足要求。

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