‘壹’ sqlserver ce 中 分页查询语句如何写好像ce中不支持top,有没有其他替代的sql呢
SELECT * FROM (
SELECT row_number() over(order by '排序字段') AS rowNumbers,t.* FROM (
你原来的Sql
) t ) t WHERE t.rowNumbers between 1 AND 10
‘贰’ SqlServer 多表查询分页
if (object_id('pro', 'P') is not null)
drop proc pro
go
create procere pro
@pageIndex int,
@pageSize int
as
declare @startRow int, @endRow int
set @startRow = (@pageIndex - 1) * @pageSize +1
set @endRow = @startRow + @pageSize -1
select * from (
select a.*,b.img_typename from jingwailife a,jingwaiimgtype b ,row_number() over (order by sno asc) as number
where a.img_type=b.img_typecode
and a.img_type='1' ) t
where t.number between @startRow and @endRow
go
exec pro @pageIndex , @pageSize
go
‘叁’ 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)
‘肆’ sqlserver分页查询
select top 页大小 *
from table1
where id>
(select max (id) from
(select top ((页码-1)*页大小) id from table1 order by id) as T
)
order by id
‘伍’ SQL Server 分页 查询语句
四种方式实现SQLServer 分页查询
SQLServer 的数据分页:
假设现在有这样的一张表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大约1000条数据,进行分页测试
假设页数是10,现在要拿出第5页的内容,查询语句如下:
--10代表分页的大小
select top 10 *
from test
where id not in
(
--40是这么计算出来的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出数据库的第5页,就是40-50条记录。首先拿出数据库中的前40条记录的id值,然后再拿出剩余部分的前10条元素
第二种方法:
还是以上面的结果为例,采用另外的一种方法
--数据的意思和上面提及的一样
select top 10 *
from test
where id >
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查询前40条记录,然后获得其最id值,如果id值为null的,那么就返回0
然后查询id值大于前40条记录的最大id值的记录。
这个查询有一个条件,就是id必须是int类型的。
第三种方法:
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber > 40
原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录
这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的
第四种:
存储过程查询
创建存储过程
alter procere pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
begin
select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
执行存储过程
exec 10,5
‘陆’ sqlserver分页语句怎么写要不用 top的
还有一种使用方法是用ROW_NUMBER()over(order by) 的函数作为内部查询查出所有的行号,外面通过ROW_NUMBER定义范围查询。
例如有一张Person表,有10000条数据,现在分页查询前1000条。
Top语法:
SELECT TOP 1000 * FROM PERSON;
ROW_NUMBER()OVER(ORDER BY)语法:
order by的作用就是作为排序,后面我们假设使用一个Person表中的id字段
那么sql就是:
SELECT * FROM
(
SELECT *, ROW_NUMBER()OVER(ORDER BY id) AS 'Row' FROM PERSON
)AS T
WHERE t.Row<1001
‘柒’ 数据库SQLServer2005分页查询数据:
select top 0 这个是干什么的,有什么意义吗?
是想按照哪个id排序啊?
select top 5 * from blog ,category where blog.catId=category.id and blog.id not in (select top 0 blog.id from blog order by id desc ) order by id desc
‘捌’ 在jsp中sqlserver的分页查询语句是
很简单 mysql是用limit分页的
他的语句是select * from TABLE limit x,y
x和y就是每页显示多少条到多少条记录
分页的时候只需要把你每页的记录数算出来 然后给到变量就可以了
‘玖’ SQL Server数据库用sql语句实现分页查询 (从M条数据开始,查找N条记录。sqlserver数据库。请举例说明。)
1:新建一个数据库
create database 数据库名
2:新建一个表
create table 表名
(
字段名 类型 是否为空
)
3:删除一个表
drop table 表名
4:增加一个记录
insert 表名 [(字段)] values ( 内容 )
5:删除一个记录
delete [from] 表名 where 条件
6、修改一个记录
update 表名 set 字段名=更新内容 where 条件
7、在原表中增加一个字段
alter table 表名 add column 字段名 类型
8:在原表中删除一个字段
alter table 表名 drop column 字段名
9、查询一个表记录
select * from 表名
10、带条件查询一个表记录
select * from 表名 where =条件
‘拾’ sqlserver实现分页的几种方式
老生常谈:
1 row_number
2 top not in
请试一试,如有疑问,及时沟通!