MySQL:如何从两个表中获取结果而不重复?

8 浏览
0 Comments

MySQL:如何从两个表中获取结果而不重复?

我有三个表:书籍、出版商和书籍类别。\n对于特定的书籍类别(奇幻),我需要显示供应该类别的出版商名称列表。\n出版商名称和类别名称通过书籍表关联,所以我的查询语句是:\n

SELECT publisher.publisher_name
FROM publisher, book, book_category
WHERE publisher.publisher_id = book.publisher_id
AND book.category_id = book_category.category_id
AND category_name =  '奇幻';

\n但是我得到的结果是,如果同一个出版商提供了多本奇幻书籍,出版商的名称会重复出现。\n假设我有《霍比特人》和《指环王》,两者都是奇幻类书籍,由同一家出版商A提供。\n在这种情况下,我的查询结果是:\n

出版商A
出版商A

\n是否有可能只得到一次这样的结果?即使同一出版商有多于两本奇幻书籍发行?

0
0 Comments

问题的原因是查询结果中出现了重复的结果,需要找到一种方法来去除重复的结果。

解决方法是在查询语句的末尾添加 "GROUP BY" 子句,并指定需要按照哪个字段进行分组,以去除重复的结果。

以下是一个示例:

SELECT book.book_title, publisher.publisher_name

FROM book

INNER JOIN publisher ON book.publisher_id = publisher.publisher_id

GROUP BY publisher.publisher_name;

上述查询语句将从两个表(book和publisher)中获取结果,并按照出版商名称(publisher_name)进行分组,以去除重复的结果。

0
0 Comments

问题原因:在从两个表中获取结果时,可能会出现结果重复的情况。

解决方法:使用DISTINCT关键字进行去重操作。

具体代码如下:

SELECT DISTINCT publisher.publisher_name
FROM publisher, book, book_category
WHERE publisher.publisher_id = book.publisher_id
AND book.category_id = book_category.category_id
AND category_name = 'fantasy';

该代码可以通过连接三个表,根据条件获取publisher_name,并使用DISTINCT关键字确保结果中没有重复的publisher_name。

0
0 Comments

MySQL中如何从两个表中获取结果而不重复的问题?

如果只需要publisher_name,则可以使用distinct关键字。

SELECT distinct publisher.publisher_name

另外,建议使用JOIN语法来连接表。

SELECT distinct p.publisher_name
FROM publisher p
join book b on b.publisher_id = p.publisher_id
join book_Category bc on bc.category_id = b.category_id
where bc.category_name = 'fantasy'

0