SQL查询连接表并比较总和以返回最大值

时间:2013-10-31 23:02:10

标签: mysql sql join

我是mysql的新手,对于加入和添加内容有疑问。

我有以下表格:booksgenres

书籍表如下:

id | name | pages | genre_id

流派表:

id | name | category_id

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

有人可以帮忙吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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

请注意,如果有平局,您还没有定义自己想要的内容。