用户登录

在这个查询结果里面,id=3 的这个内容出现了很多次,下面我们要解决这个重复的问题。在这个查询的最后,可以先用一个 GROUP BY,设置一下按 post.id 这个栏目分组。

然后去掉 file.id 还有 file.originalname 这两个栏目,重新再执行一下这段 SQL。这次你会发现就没有重复的内容项目了。

如果在查询里去掉这个 GROUP BY ,执行一下,结果里面又会出现重复的内容项目。 加上这个 GROUP BY。 下面还得想办法在查询结果里包含与内容相关的文件。

这里我们可以用一下 JSON_ARRAYAGG 这个方法,组织一个 JSON 数组, 给这个栏目起个名字叫 files。 然后设置一下这个数组里的数据项目,这个数据项目我们可以使用 JSON_OBJECT 组织一个 JSON 对象。 它里面有 id 这个属性,对应的值是 file 里的 id 栏目。再加上一个 originalname ,对应的值是 file 数据表里的 originalname 。

执行一下这段查询,再观察一下查询出来的数据。

这回在查询结果里面会包含一个 files 栏目,它的值是个 JSON 的数组,这个数组里面有一些数据项目,每个数据项目都是一个 JSON 对象,它里面有 id 还有 originalname 这两个属性。

没有相关文件的内容,它的 files 栏目里也有一个数组,数组项目的 id 的值是 null,originalname 的值也是 null 。

解决重复出现的内容项目(GROUP BY,JSON_ARRAYAGG)《 Node.js 服务端应用开发:资源关系 》

统计

12489
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点