sql2008分頁查詢
㈠ sqlSERVER 兩表關聯查詢分頁顯示 SQL語句
如果你用的是SQL2008以後的資料庫版本,可以這樣
SELECT
ROW_NUMBER()
OVER
(ORDER
BY
B.HID
DESC)
BH,
B.*
FROM
(SELECT
h.[醫院名稱],k.[科室名稱],k.[科室編號],k.id,k.kid
from
[醫院表]
as
h
right
join
[科室表]
as
k
on
k.hid
=
h.hid
)
B
WHERE
BH
BETWEEN
($page_size
*
$page_num)
AND
($page_size
*
$page_num
+$page_size)
㈡ sql server 2008 怎麼分頁
SELECT t.欄位名 FROM (
SELECT 欄位(可以是多表關聯的欄位) ,
row_number() over(order by 某個排序欄位 desc) r
FROM 表名 where 過濾條件 ) t
where t.r <= (每頁顯示條數*要查詢的頁) and t.r > (每頁顯示條數*(要查詢的頁-1))
有疑問可以再問
望採納
㈢ sql分頁查詢語句 不加desc可以按升序排序並分頁 我需要按照時間倒序 加上desc 怎麼數據都不變 我是sql2008
時間欄位名是什麼?看你的SQL語句里好像沒有定義時間的排序。
假設時間欄位是addtime,那可以這么寫:
SELECT TOP 5 *
FROM WorkDaily where (guid not in
( SELECT TOP 15 guid FROM WorkDaily order by guid asc))
AND isdelete =0 AND CreateById=85 order by guid desc,addtime desc
㈣ 請問下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語句 實現分頁查詢
分頁:一般會把當前頁通過get方式傳遞,php通過$_GET['page']接收。
查詢:可以從當前乘以每頁顯示數通過limit來實現分頁效果。
//每頁顯示條數
$pageSize=10;
//當前頁
$_GET['page']?$page=1:$page=$_GET['page'];
//開始查詢位置
$seat=$page*$pageSize;
//sql語句
$sql="select*fromtablelimit$seat,$pageSize";
//輸出數據到view即可
㈥ Sql server2008怎樣分頁
你可以用存儲過程分頁,如下存儲過程支持分頁和排序:
CREATE PROCEDURE GetSortedMovies
(
@SortExpression NVarChar(100),
@StartRowIndex INT,
@MaximumRows INT
)
AS
-- 創建一個臨時表存儲查詢結果
CREATE TABLE #PageIndex
(
IndexId INT IDENTITY (1,1) NOT NULL,
RecordId INT
)
-- 插入臨時表
INSERT INTO #PageIndex (RecordId)
SELECT Id FROM Movies
ORDER BY
CASE WHEN @SortExpression='Id' THEN Id END ASC,
CASE WHEN @SortExpression='Id DESC' THEN Id END DESC,
CASE WHEN @SortExpression='Title' THEN Title END ASC,
CASE WHEN @SortExpression='Title DESC' THEN Title END DESC,
CASE WHEN @SortExpression='Description' THEN Description END ASC,
CASE WHEN @SortExpression='Description DESC' THen Description END DESC
-- 得到頁數
SELECT Id,Title,Description FROM Movies
INNER JOIN #PageIndex WITH (nolock)
ON Movies.Id = #PageIndex.RecordId
WHERE #PageIndex.IndexId > @StartRowIndex
AND #PageIndex.IndexId < (@StartRowIndex + @MaximunRows + 1)
ORDER BY #PageIndex.IndexId
㈦ 如何用sql語句 實現分頁查詢
適用於 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id NOT IN
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
㈧ sql server 2008 用row_number() over()怎麼分頁
主要採用row_number對其進行編號,然後根據頁數取出相應的編號,具體的原理,你可以看一下這里
row_number分頁原理
如有疑問,及時溝通!
㈨ 關於資料庫分頁處理的SQL語句(本人用的資料庫是SQL2008)
把 StudentId+SpecialityId作為一個欄位來處理就可以了,
比如你的語句可以寫成:
select top 14 * from Student,Speciality where Student.SpecialityId=Speciality.SpecialityId
and StudentId+Student.SpecialityId not in (select top 7 StudentId+Student.SpecialityId
from Student,Speciality where
Student.SpecialityId=Speciality.SpecialityId order by StudentId desc)order by StudentId+Student.SpecialityId
像這種情況,最好是創建一個視圖,其中把StudentId+SpecialityId作為視圖中的一列,這樣就方便處理了
㈩ sqlserver2008從一個表中模糊查詢並分頁
select * from (
select * from(
select b.*,rownum rn from bbs b where title like '%呵呵%'
and rownum<=10)
where rn<=分頁的上限)
where rn>分頁的下限