【问题标题】:MySQL query to limit the number of categoriesMySQL查询限制类别数
【发布时间】:2017-08-02 14:52:09
【问题描述】:

我有一个按类别显示帖子的查询。我只需要显示前 5 个类别的结果。我的查询显示类别和类别计数。该查询显示所有类别和每个类别中的帖子数。

我想限制类别的显示。

我有这个问题:

SELECT qp_category, name, count(qp_category) as Total
FROM questionpapers
INNER JOIN
questioncategory
ON
questionpapers.qp_category = questioncategory.qcid
GROUP BY qp_category;

这是我的表结构

category table
--------------------------
qcid | name | active
--------------------------

post table
--------------------------------------------------------
qpid | title | qp_category | description | date | active
--------------------------------------------------------

【问题讨论】:

  • 在查询末尾添加Limit 5 怎么样? SELECT qp_category, name, count(qp_category) as Total FROM questionpapers INNER JOIN questioncategory ON questionpapers.qp_category = questioncategory.qcid GROUP BY qp_category LIMIT 5;
  • 是的,它通过添加 LIMIT 5 来工作。
  • 很高兴它有帮助,但很遗憾我没有将此作为答案发布,而是在评论中发布。大声笑
  • 需要一个接受评论作为stackoverflow中的答案功能
  • 如果我将其作为答案发布在下方,您会接受吗?

标签: mysql


【解决方案1】:

您需要在查询末尾添加“LIMIT”

  SELECT qp_category, name, count(qp_category) as Total 
FROM questionpapers
 INNER JOIN questioncategory ON questionpapers.qp_category = questioncategory.qcid 
GROUP BY qp_category LIMIT 5;

【讨论】:

  • 请注意,没有 ORDER BY 的 LIMIT 是毫无意义的
【解决方案2】:

我认为你需要的是 LIMIT:

SELECT qp_category, name, count(qp_category) as Total
FROM questionpapers
INNER JOIN
questioncategory
ON
questionpapers.qp_category = questioncategory.qcid
GROUP BY qp_category
LIMIT 5;

【讨论】:

  • 和上面的评论一样
【解决方案3】:

LIMIT 应该会有所帮助。

SELECT qp_category, name, count(qp_category) as Total
FROM questionpapers
INNER JOIN questioncategory ON questionpapers.qp_category = questioncategory.qcid
GROUP BY qp_category
LIMIT 5;

FYI:如果SQL Server,则使用TOP,如果MySQL 或PostgreSQL,则使用LIMIT。

【讨论】:

  • 同样,请注意没有 ORDER BY 的 LIMIT 是毫无意义的
  • 不能同意更多,但没有提及订购类别。如果不需要序列,则使用 ORDER BY 子句是开销。
  • 并非如此。如果有人想要某件事的前 5 个,那么即使提供了 GROUP BY 子句,也需要 ORDER BY。该手册对此进行了更详细的介绍
  • 我的目的不是争论,但我可以给你很多现实生活中的例子,当你使用 GROUP BY 和/或 LIMIT 时你不关心排序数据。同样,某些数据库风格(如 MySQL)按 GROUP BY 子句中的列自动对数据进行排序,并且不需要 order by。事实上,如果你想避免排序开销,建议使用 ORDER BY NULL。
  • 这种错误的看法正是手册中更详细讨论的内容
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 2010-09-14
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 2019-12-14
  • 1970-01-01
相关资源
最近更新 更多