如题,mysql的的sql语句是:
sql="SELECT * FROM a LIMIT " + start +","+ limit;google了一下,搜到的sql server对应写法是:long num = start+limit-1;
sql="SELECT top " + limit + " * FROM (select top "+num+" * from a) b";但是看到的分页显示并不正常,和mysql实现的效果不一样,各位是如何实现的呢?谢谢!
sql="SELECT * FROM a LIMIT " + start +","+ limit;google了一下,搜到的sql server对应写法是:long num = start+limit-1;
sql="SELECT top " + limit + " * FROM (select top "+num+" * from a) b";但是看到的分页显示并不正常,和mysql实现的效果不一样,各位是如何实现的呢?谢谢!
解决方案 »
- 用GUID会慢吗?
- 请教各位高手:如何将相同员工的列数据作为记录横向显示?急!!!
- 如何在SQLserver中存储并读取图片?
- ★★★ 请教各位:怎样在access中写trigger ??? 很急!!! ★★★
- asp.net中怎么样恢复数据库,我备份与删除是可以的
- 如何访问master.sysmessages数据表
- 请问在服务器里有许多数据库,如何查到该服务器的默认服务器(用何存贮过程,详细用法!)?
- 求一分组汇总语句
- 关于restore Database的问题SQLState:42000,急呀
- 高分感谢zjcxc(: 邹建 :) 帮我解决难题!!请邹建兄进来接分!!
- 请教一条查询语句
- 关于SQL中的模糊查询
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/) 2.
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表
set rowcount n --只取n条结果
select * from 表变量 order by columnname desc 3.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname desc
4.如果tablename里没有其他identity列,那么:
先生成一个序列,存储在一临时表中.
select identity(int) id0,* into #temp from tablename 取n到m条的语句为:
select * from #temp where id0 > =n and id0 <= m 如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
exec sp_dboption 你的DB名字,'select into/bulkcopy',true
5.如果表里有identity属性,那么简单:
select * from tablename where identity_col between n and m 6.SQL2005开始.可以使用row_number() over()生成行号
;with cte as
(
select id0=row_number() over(order by id),* from tablename
)
select * from cte where id0 between n to m
TOP 子句限制返回到结果集中的行数。TOP n [PERCENT]n 指定返回的行数。如果未指定 PERCENT,n 就是返回的行数。如果指定了 PERCENT,n 就是返回的结果集行的百分比,如下所示:TOP 120 /*Return the top 120 rows of the result set. */
TOP 15 PERCENT /* Return the top 15% of the result set. */.如果一个 SELECT 语句既包含 TOP 又包含 ORDER BY 子句,那么返回的行将会从排序后的结果集中选择。整个结果集按照指定的顺序建立并且返回排好序的结果集的前 n 行。限制结果集大小的另一种方法是在执行一个语句之前执行 SET ROWCOUNT n 语句。SET ROWCOUNT 与 TOP 的不同之处在于: SET ROWCOUNT 限制适用对 ORDER BY 取值后在结果集中生成行。如果指定了 ORDER BY,SELECT 语句将在从某个已根据指定的 ORDER BY 分类进行了排序的值集中选择 n 行后终止。
TOP 子句适用于指定了该子句的单个 SELECT 语句。在执行另一个 SET ROWCOUNT 语句之前,SET ROWCOUNT 会一直有效,例如执行 SET ROWCOUNT 0 将会关闭此选项。