【问题标题】:MySQL query to find top itemsMySQL查询以查找顶级项目
【发布时间】:2011-09-18 10:45:54
【问题描述】:

我有一个名为 order_list 的表,其中包含以下字段

  • order_id
  • user_id
  • item_id
  • 计数
  • 日期
  • 订单状态

用户每次下订单时,此表用于保存订单详情。那么如何编写我的 SQL 查询来根据排序计数的总和查找前 10 项?

【问题讨论】:

  • 我建议您将其预先计算在单独的表格中

标签: mysql


【解决方案1】:
SELECT item_id, SUM(count) FROM order_list GROUP BY item_id ORDER BY SUM(count) DESC LIMIT 0,10

【讨论】:

  • 这种情况下的嵌套查询不是个好主意——mysql无法优化这种情况,你会得到N+1个查询
  • 删除 *(这将使查询 ansi sql 有效),我会支持你 ;-)
【解决方案2】:
SELECT *
FROM table_name 
GROUP BY item_id 
ORDER BY count DESC
LIMIT 10

【讨论】:

  • 你还需要GROUP BY(和SUM
【解决方案3】:
select item_id, sum(count) as total 
from order_list 
group by item_id 
order by total desc 
limit 10

【讨论】:

  • 我认为这行不通,它会说按顺序使用的总数不存在
猜你喜欢
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-13
相关资源
最近更新 更多