当前位置:首页 » 编程语言 » sql2008分页查询

sql2008分页查询

发布时间: 2022-09-01 19:23:23

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>分页的下限

热点内容
湖南it服务器怎么样 发布:2025-01-16 03:01:01 浏览:245
图中两种配置哪个好 发布:2025-01-16 02:59:28 浏览:579
如何解开密保密码 发布:2025-01-16 02:57:44 浏览:20
中国银行查询密码是什么 发布:2025-01-16 02:33:20 浏览:791
坚果pro录音文件夹 发布:2025-01-16 02:31:46 浏览:939
支付宝的登录密码忘记了如何改 发布:2025-01-16 02:30:30 浏览:221
解压作业泥 发布:2025-01-16 02:28:02 浏览:807
我的世界rpg服务器空岛 发布:2025-01-16 02:26:49 浏览:90
ps脚本函数 发布:2025-01-16 02:15:28 浏览:481
android显示行数据 发布:2025-01-16 02:07:40 浏览:963