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
,此时查询出来的结果对应如下:
现在要求,只取出一个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的值都相同的才会被排除,因此不可满足业务要求