在我的使用案例中,书籍的作者被我放进了另外一个叫做Author的表中,而有些书可能有好几位作者,那么在查询中如果不分组,就会出现如果一本书有两位作者就会生成两条记录,三位作者就是三条,其他信息都是一样的,见下图:
book-no-group_by.png
而如果使用group by将同一本书分类后,作者就只显示第一位,其他作者都不显示,见下图:
book-group_by.png
对于这类需求的处理,MySQL中会使用group concat函数,但是官方文档中并没有提到默认开启了该项。抱着试试的心态,将Author.Name字段放入GROUP_CONCAT函数(Cargo中的SQL函数均为大写)中,代码如下:

{{#cargo_query:
tables=Book_Info, Author
|fields=Book_Info.Cover, Book_Info._pageTitle, Book_Info._pageName, GROUP_CONCAT(Author.Name)
|where=Seires LIKE "{{PAGENAME}}"
|join on=Book_Info._pagename=Author._pagename
|group by=Book_Info.BookName
}}

竟然成功了,都不需要手动开启(不知道是不是升级后新加的功能函数),最终效果见下图:
Book-Group_Concat.png

最后修改:2022 年 06 月 22 日
如果觉得我的文章对你有用,请随意赞赏