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