當前位置:首頁 » 編程語言 » sql獲取最後頁
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql獲取最後頁

發布時間: 2023-03-13 03:59:17

⑴ 如何用sql,實現做翻頁

1、首先獲取總數據條數 select count(id) from table

2、然後根據總數獲取總頁數
3、根據ajax傳遞參數,page,size

sql語句如下
select * from table limit (page-1) * size , size
描述較為簡略,如有疑問可追答

⑵ yii2.0獲取到最後一條執行的sql怎麼看

這個有很多種方法

1. yii有提供一個getRawSql方法 比如說一個查詢

$query=User::find();
$query->select(['username','age'])->where(['id'=>1)->one();

echo$query->createCommand()->getRawSql();//輸出sql語句

2.可開啟yii2的debug模塊,這個功能很強大,在裡面可以查到當前頁面所有的sql信息,具體配置方法自行網路,網上太多這個配置了

3.查找Yii源碼 隨便找個模型調用原生的方法 比如 User::updateAll 方法,通過編輯器定位到updateAll方法的源碼 你會發現下面一段代碼

publicstaticfunctionupdateAll($attributes,$condition='',$params=[])
{
$command=static::getDb()->createCommand();
$command->update(static::tableName(),$attributes,$condition,$params);

return$command->execute();
}

繼續定位execute方法

publicfunctionexecute()
{
$sql=$this->getSql();
$rawSql=$this->getRawSql();

Yii::info($rawSql,__METHOD__);
if($sql==''){
return0;
}

$this->prepare(false);
$token=$rawSql;
try{
Yii::beginProfile($token,__METHOD__);

$this->pdoStatement->execute();
$n=$this->pdoStatement->rowCount();

Yii::endProfile($token,__METHOD__);

$this->refreshTableSchema();

return$n;
}catch(Exception$e){
Yii::endProfile($token,__METHOD__);
throw$this->db->getSchema()->convertException($e,$rawSql);
}
}

方法里$rawSql就是最原生要執行的sql拉,在這里打斷點輸出就ok

個人推薦第二種方法,最方法最高效,具體配置方法自己網路,很簡單!

⑶ 請問下sqlserver2008分頁語句怎麼寫

1、這種SQL分頁語句,是用正反向排序的原理寫:
先按你需要的排序,取到你要的頁數的數據;再從其中按倒序取,每頁要顯示多少行就取多少個。這樣取出的就是需要的數據;再按需要的排序重新排下序就是所要取的第n頁的數據了;
然後要取的頁數用參數傳遞,就可以按參數取任意頁的數據集。

2、這種做法的缺陷是:
用來排序的欄位必須是關鍵數據集,即能唯一確定數據行的欄位集;排序欄位相同的數據行有多個的話,則這幾行之間的排序會有問題;

3、排序欄位是關鍵數據集的話,不用說了,直接用現有欄位實現就是;參照加行號的語句,去掉rownum,按你自己的欄位寫order子句 替換rownum的排序就是;而且最內層還可以去掉一層子查詢;

4、排序欄位不是關鍵數據集的話,需要加個行號欄位,作為排序欄位:從1開始,遞增1個的順序(1、2、……);2008的話,支持row_number(),就好辦多了,否則就只好自己控制生成一個序列欄位,再合並到數據集上了。

5、加個行號欄位的語句具體如下,其中具體表、欄位,按你自己的實際情況代換下:
declare @iPage int --所取的頁的序數 (第幾頁)
declare @iPageNum int --所取的數據行數(除最後一頁外,每頁所取的行數應該都是一樣的)
declare @iRecordNumber int --取@iPage頁時,結尾記錄所在行數
declare @iRecordCount int --總記錄行數

--變數初始化
set @iPage=2 --可用參數傳遞
set @iPageNum=10 --默認每頁取10行
set @iRecordNumber=@iPage*@iPageNum
select @iRecordCount=count(任意欄位,最好不要用*) from 你取數據的表

--取最後一頁時,重算結尾所在行數(@iRecordNumber)、所取記錄數(@iPageNum)
if @iRecordNumber>@iRecordCount
begin
set @iRecordNumber=@iRecordCount
if (@iRecordNumber%@iPageNum)>0
set @iPageNum=@iRecordNumber%@iPageNum
end

declare @strSQL varchar(max)
set @strSQL='select * from ('
set @strSQL=@strSQL + 'select top '+ convert(varchar(5),@iPageNum) +' * from('
set @strSQL=@strSQL + 'select top '+ convert(varchar(7),@iRecordNumber) +' * from'
set @strSQL=@strSQL + '('
set @strSQL=@strSQL + 'select row_number()over(order by 你需要的排序欄位及正反序)as RowNum,*from 你取數據的表'
set @strSQL=@strSQL + ') a order by rownum'
set @strSQL=@strSQL + ') b order by rownum desc'
set @strSQL=@strSQL + ') c order by rownum'

exec(@strSQL)

⑷ SQL語句查詢最後兩條記錄怎麼寫

用的SQL代碼塊實現,聲明一點這是假分頁查詢技術,我是先把全部信息查出,然後只顯示了最後兩行記錄;

DECLARE

V_count NUMBER;

CURSOR cur_emp IS SELECT rownum nu,e.* FROM emp e;

BEGIN

SELECT COUNT(*) INTO v_count FROM emp;

dbms_output.put_line('查出一共多少行記錄:'||v_count) ;

FOR e IN cur_emp LOOP

IF (e.nu>(v_count-2))THEN

dbms_output.put_line('這是記錄序號:'||e.nu||' 這是記錄內容:'||e.sal);

END IF;

END LOOP;

END;

1、emp是所要查詢的表

2、不知道過濾條件因此我是全部查詢count(*),可以跟據實際條件改動

⑸ SQL語句自帶的分頁,就是最後between 1 and 20這樣的。現在要導出到excel,但因為記錄比較多,百萬級的

select Field1,Field2 from table with(nolock)再加個索引就會快一些,
不想再查詢的話放到內存裡面,第二次再從內存裡面拿數據

⑹ MS SQL 查詢最後5條記錄,該如何操作。

數據表要有規律,比如按照時間自增或者有記錄創建時間,

以有自增列為例:

selecttop5*fromtb
orderbyIDdesc--排序,後面往前排,再是使用TOP5提取前5條數據

⑺ 在PHP中使用SQL語句 怎麼取出查詢出來的最後一個數據

在PHP中使用SQL語句可以通過倒序排列記錄取出第一條的記錄取到最後一條數據。
一般,php調用mysql的介面查詢,查詢語句如下:
select * from table order by id DESC limit 1
這樣就取出記錄的最後一條記錄。