小编典典

MySQL:如何获得每个分组的x个结果数

sql

我有两个表:

  1. 项目
  2. 分类目录

每个项目都属于一个类别。我想做的是每个类别选择5个项目,但总共说20个项目。

SELECT

   item_id, item_name, items.catid

FROM

   items, categories

WHERE

   items.catid = categories.catid

GROUP BY items.catid LIMIT 0,5 //5 per category group

编辑:如果每个类别有5个以上的项目,则应按item_id(数字值)对其进行排序


阅读 185

收藏
2021-04-15

共1个答案

小编典典

试试这个查询-

SELECT item_id, item_name, catid FROM 
  (SELECT t1.*, COUNT(*) cnt FROM items t1
    LEFT JOIN items t2
      ON t2.catid = t1.catid AND t2.item_id <= t1.item_id 
  GROUP BY
    t1.catid, t1.item_id
  ) t
WHERE
  cnt < 6
-- LIMIT 20

它将显示每个类别的前5个项目。LIMIT 20如果需要,请取消注释。Categories如果需要,请加入表格。

2021-04-15