2010-01-28 116 views
3

我有一个表INVENTORY,其他列CATEGORYUPDATED。 通过这些列表格排序很简单:MYSQL - 为表中的每个类别选择前4条记录

SELECT * FROM INVENTORY ORDER BY CATEGORY ASC, UPDATED ASC

我想要的是得到一个只包含从每个类别中的前4行的结果集。 任何想法如何完成它?

+0

这可能在一个查询? – 2016-04-07 09:15:24

回答

2

大同小异为How to limit an SQL result set to not too common items

你可以尝试像

SELECT * 
FROM (
      SELECT *, 
        ( SELECT COUNT(1) 
         FROM INVENTORY 
         WHERE CATEGORY = i.CATEGORY 
         AND  UPDATED < i.UPDATED 
        ) CountTotal 
      FROM @INVENTORY i 
     ) sub 
WHERE sub.CountTotal <= 3 
+0

这是错误的。它仅返回来自少于4个条目的类别的条目,而不是最多3条的条目。 – ZzZombo 2016-05-05 09:39:52

相关问题