3
我有一个表INVENTORY
,其他列CATEGORY
和UPDATED
。 通过这些列表格排序很简单:MYSQL - 为表中的每个类别选择前4条记录
SELECT * FROM INVENTORY ORDER BY CATEGORY ASC, UPDATED ASC
我想要的是得到一个只包含从每个类别中的前4行的结果集。 任何想法如何完成它?
我有一个表INVENTORY
,其他列CATEGORY
和UPDATED
。 通过这些列表格排序很简单:MYSQL - 为表中的每个类别选择前4条记录
SELECT * FROM INVENTORY ORDER BY CATEGORY ASC, UPDATED ASC
我想要的是得到一个只包含从每个类别中的前4行的结果集。 任何想法如何完成它?
大同小异为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
这是错误的。它仅返回来自少于4个条目的类别的条目,而不是最多3条的条目。 – ZzZombo 2016-05-05 09:39:52
这可能在一个查询? – 2016-04-07 09:15:24