2010-01-28 262 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

相關問題