在分页中为每个页面的每个类别仅获取1条记录

时间:2011-06-03 02:25:57

标签: mysql

我的表格结构如下

id        int
name      varchar 50
catid     int

示例数据

id                     name                      catid
---------------------------------------------------------
 1                     AAA                         1
 2                     BBB                         1
 3                     CCC                         1
 4                     DDD                         2
 5                     EEE                         2
 6                     FFF                         1
 7                     GGG                         2
 8                     HHH                         2     
 9                     III                         1

我想查询这样的分页每个页面的每个类别中的一行

现在第一页我需要数据

id                     name                      catid
---------------------------------------------------------
 1                     AAA                         1
 4                     DDD                         2

现在第二页我需要数据

id                     name                      catid
---------------------------------------------------------
 2                     BBB                         1
 5                     EEE                         2

现在第三页我需要数据

id                     name                      catid
---------------------------------------------------------
 3                     CCC                         1
 7                     GGG                         2

等等。

我怎样才能做到这一点。

3 个答案:

答案 0 :(得分:1)

SELECT * FROM table WHERE catid = 1 LIMIT :pageno 1 
SELECT * FROM table WHERE catid = 2 LIMIT :pageno 1 

我认为,这将是最简单的查询以获得所需的结果。

答案 1 :(得分:0)

是的,正如Pradeep所说,LIMIT子句是在MySQL中最简单的方法。您仍然需要在PHP中进行一些编码,以便为您的用户生成可点击的页码。

答案 2 :(得分:0)

这对我有用(Linux上的MySQL 5.1)

SELECT id, name, catid FROM 
   (SELECT id, name, catid FROM t WHERE catid=1 LIMIT 2,1) AS t1 
   UNION (SELECT id, name, catid FROM t WHERE catid=2 LIMIT 2,1)
   ORDER BY catid

限制中的2是页码。因此,这个的输出是第二页。