2011-06-03 45 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中使用一些編碼來爲用戶生成可點擊的頁碼。