0

我是 mysql 新手,对连接和添加内容有疑问。

我有以下表格:booksgenres

书籍表如下所示:

id | name | pages | genre_id

流派表:

id | name | category_id

我想获得页面最多的类型。
所以如果genre1有5本书,每本书有100页,那么有500页genre1,如果genre2有 2 本书但每本书有 300 页,则genre2有 600 页。查询应该返回genre2

任何人都可以帮忙吗?

4

3 回答 3

1

这将获得类型和其中的总页数,按降序排列,LIMIT 1将选择顶部的一个。

SELECT
    g.name,
    SUM(b.pages) AS p_total
FROM
    books b
    JOIN genres g ON g.id = b.genre_id
GROUP BY g.id
ORDER BY p_total DESC
LIMIT 1
于 2013-10-31T23:05:35.133 回答
1

这是说明以下查询的SQL Fiddle

SELECT g.name, SUM(b.pages)
FROM books AS b
  INNER JOIN genres AS g
  ON b.genre_id = g.id
GROUP BY g.id
ORDER BY SUM(b.pages) DESC
LIMIT 1
于 2013-10-31T23:05:38.963 回答
0

我的 MySQL 真的很生锈,但这听起来很简单:

SELECT G.name
FROM Books AS B INNER JOIN Genres AS G ON B.genre_id = G.id
GROUP BY G.name
ORDER BY SUM(B.pages) DESC
LIMIT 1

请注意,如果有平局,您还没有定义您想要什么。

于 2013-10-31T23:05:58.300 回答