好比有文章表 Article(Id,Category,InsertDate),如今要用SQL找出每種類型中時間最新的前N個數據組成的集合,一段不錯的代碼,留存備用,轉自(loveyuki.com),感謝。code
SELECT A1.* FROM Article AS A1 INNER JOIN (SELECT A.Category,A.InsertDate FROM Article AS A LEFT JOIN Article AS B ON A.Category = B.Category AND A.InsertDate <= B.InsertDate GROUP BY A.Category,A.InsertDate HAVING COUNT(B.InsertDate) <= @N ) AS B1 ON A1.Category = B1.Category AND A1.InsertDate = B1.InsertDate ORDER BY A1.Category,A1.InsertDate DESC @N 就是你要取多少條
下面是我用到了一個產品分類表中,superId是大分類,prcid是產品分類。能用SQL完成的功能就要儘可能用SQL語句來完成,這既簡潔又高效。ci
SELECT A1.* FROM prcKx AS A1 INNER JOIN ( SELECT A.superId, A.prcid FROM prcKx AS A LEFT JOIN prcKx AS B ON A.superId = B.superId AND A.prcid <= B.prcid GROUP BY A.superId, A.prcid HAVING COUNT(B.prcid) <= 7 ) AS B1 ON A1.superId = B1.superId AND A1.prcid = B1.prcid ORDER BY superId, prcid