Re: [問題] sql語法,count同時取得資料該如何做?
假設每頁呈現20筆記錄:
第一頁:
select * from assets limit 0,20; // 0是記錄的起始序號(0-base),20代表要幾筆.
第二頁:
select * from assets limit 20,20;
第三頁:
select * from assets limit 40,20;
依此類推. 假設在程式中用PageNo變數控制頁碼(1-base), 用PageSize變數控制頁
的呈現筆數的話:
ex: (PHP case:)
$sql=sprintf("select * from assets limit %d,%d",($PageNo-1)*20,$PageSize);
$rows=mysql_query($sql,$link);
至於總頁數則需另以一道sql描述來查:
$sql="select count(*) as c from assets";
$rows=mysql_query($sql,$link);
$r=mysql_fetch_assoc($rows);
$count=$r['c']; //記錄的總筆數
$PageCount=floor(($count-1)/$PageSize)+1; //換算成總頁數
※ 引述《aoisama (葵)》之銘言:
: 大家好,我正在開發網頁架構的資料庫程式
: 採用MySql作為資料庫
: 現在我遇到的問題是,我要顯示部分的資料,由於資料比數很大,需要作換頁的功能
: 我的語法是這樣
: SELECT * FROM assets LIMIT 20
: 一次取20筆資料,但我需要知道總列數才能作換頁功能,所以我下這樣的語法
: SELECT *, COUNT(id) AS cnt FROM assets LIMIT 20
: 但這樣出來的結果只有1列...
: 請問各位前輩,正確的語法該怎麼做,要用子查詢嗎?
: 還是說一定得分兩次query才行?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.253.140
討論串 (同標題文章)