2011-06-03 144 views
1

我的表结构如下从每个类别只得到1记录每一页分页

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 

我想查询,如它让我1列从每个分类中的每一页

现在第一页我需要数据为

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

现在为第2页,我需要的数据作为

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

现在的第3页,我需要的数据作为

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

等。

我该如何做到这一点。

+0

是否仅限于所有页面的类别1和2,还是可以增长?我认为一个有限制组合的工会可能是一条可行的路。 – Rasika 2011-06-03 02:41:28

+0

@Rasika:是的,它仅限于第1类和第2类。 – 2011-06-03 03:03:28

+0

SELECT id,name,catid from t where catid = 1 limit 2,1 union select id,name,catid from t where catid = 2 limit 2,1 – 2011-06-03 03:03:36

回答

0

这在极限工作对我来说(MySQL 5.1中在Linux上)

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页码。因此,这一个的输出是第二页。

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

我想,这将是最简单的查询来获得所需的结果。

+0

对每个类别进行查询是不可行的。我需要一个查询,它可以覆盖表格中的catid – 2011-06-03 03:16:52

0

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