gpt4 book ai didi

mysql - 如何优化此查询以不重复获取重复信息

转载 作者:行者123 更新时间:2023-12-01 00:54:48 26 4
gpt4 key购买 nike

假设我有两个表,author 和 book。每个作者可以有多本书,由书表的 authorId 列标识,该列链接到作者表的 id 字段。

我想获取具有特定类别 ID 的所有书籍,并且对于每本书,我都想获取作者姓名和照片 url,以显示在书名旁边。

所以我做了这样的查询:

SELECT author.name, author.photoUrl, book.title
FROM author, book
WHERE book.categoryId = '3' AND author.id = book.authorId

问题是,如果作者在该类别中有多本书怎么办? (例如,小说作家写了多本小说书)。在这种情况下,是否会为每一行单独获取作者的信息,从而获取重复的信息,或者是否有任何方法,例如使用 DISTINCT 以便只获取一次作者的信息?

最佳答案

首先,您应该使用标准的连接语法:

SELECT author.name, author.photoUrl, book.title
FROM author join
book
on author.id = book.authorId
WHERE book.categoryId = '3'

您所说的“重复”信息正是 SQL 在联接中所做的。这没有问题。如果您举例说明您想要返回的内容,那么可能有一种方法可以减少数据。

让我印象深刻的是,您可能想要一个作者的书籍列表,作为一个分隔列表。在那种情况下试试这个:

SELECT author.name, author.photoUrl,
group_concat(book.title separator ', ') as books
FROM author join
book
on author.id = book.authorId
WHERE book.categoryId = '3'
group by author.name, author.photoUrl

关于mysql - 如何优化此查询以不重复获取重复信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com