社区
MS-SQL Server
帖子详情
续“有关Select Top 100 From TableName的问题”
Muzhu
2003-05-17 03:06:18
如果使用Select * From TableName的排序是固定的,
那这种默认的排序规则是什么呢?
那么我要在数据库的第2条和第3条之间插入数据应该怎么办?
...全文
43
7
打赏
收藏
续“有关Select Top 100 From TableName的问题”
如果使用Select * From TableName的排序是固定的, 那这种默认的排序规则是什么呢? 那么我要在数据库的第2条和第3条之间插入数据应该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Muzhu
2003-05-17
打赏
举报
回复
那问一个难一点的问题,请选用你擅长的语言实现两个任意大小的数字相加。
Muzhu
2003-05-17
打赏
举报
回复
谢谢!
caiyunxia
2003-05-17
打赏
举报
回复
主键(可能有多个,自己修改)
使用聚集索引
聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。
当索引值唯一时,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇员 ID 列 emp_id 查找特定雇员的最快速的方法,是在 emp_id 列上创建聚集索引或 PRIMARY KEY 约束。
说明 如果该表上尚未创建聚集索引,且在创建 PRIMARY KEY 约束时未指定非聚集索引,PRIMARY KEY 约束会自动创建聚集索引。
也可以在 lname(姓氏)列和 fname(名字)列上创建聚集索引,因为雇员记录常常是按姓名而不是按雇员 ID 分组和查询的。
注意事项
Muzhu
2003-05-17
打赏
举报
回复
请问您怎么得知它是按“插入数据的先后顺序”来排序的?在哪里有正式说明吗?请给出!谢谢了!
Muzhu
2003-05-17
打赏
举报
回复
谢谢!好象明白了,但pk是什么意思能说一下吗?
caiyunxia
2003-05-17
打赏
举报
回复
聚集索引的排序
如没有
就是插入数据的先后顺序
caiyunxia
2003-05-17
打赏
举报
回复
select top 2 * from (select top 3 * from tablle) a order by pk desc
用SqlServer2005的新功能解决分页显示数据获取的
问题
sqlserver2005的
select
语句top子句可以跟参数,这样就很好的解决了分页的
问题
,通用的写法就是:
select
【排序列】,【显示列1...N】 from
Table
Name where
【排序列】 in
select
top (@PageNo*@PageSize) 【排序列】 from
Table
Name order by 【排序列】/Desc)
and
【排序列】not in
select
top ( (@PageNo-1) * @PageSize) 【排序列】 from
Table
Name order by 【排序列】/Desc)
order by 【排序列】/desc
当然还可以更优化一下
SQL 常用查询语句
一些常用的SQL查询收藏,供大家分享!希望对大家有帮助~~~~~~~
oracle、mysql数据库分页.pdf
oracle、mysql数据库分页.pdf
sqlServer删除重复数据
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
sql 2000自定义分页存储过程
CREATE PROCEDURE [dbo].[pro_Pager] @
Table
Name varchar(50), @Condition nvarchar(500), @Fields varchar(500), @CurrentPage int, @PageSize int, @OrderField varchar(
100
), @OrderType varchar(4) AS set nocount on declare @SQL nvarchar(2000) if @OrderType = 'Desc' begin if @Condition = 'None' begin if @CurrentPage = 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' order by ' + @OrderField + ' desc' end if @CurrentPage > 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' where ' + @OrderField + '<(
select
min(' + @OrderField + ') from (
select
top ' + Cast(@PageSize*(@CurrentPage-1) as varchar) + ' ' + @OrderField + ' from ' + @
Table
Name + ' order by ' + @OrderField + ' desc) temp) order by ' + @OrderField + ' desc' end end else begin if @CurrentPage = 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' ' + @Condition + ' order by ' + @OrderField + ' desc' end if @CurrentPage > 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' ' + @Condition + ' and ' + @OrderField + '<(
select
min(' + @OrderField + ') from (
select
top ' + Cast(@PageSize*(@CurrentPage-1) as varchar) + ' ' + @OrderField + ' from ' + @
Table
Name + ' ' + @Condition + ' order by ' + @OrderField + ' desc) temp) order by ' + @OrderField + ' desc' end end end else begin if @Condition = 'None' begin if @CurrentPage = 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' order by ' + @OrderField + ' asc' end if @CurrentPage > 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' where ' + @OrderField + ' > (
select
max(' + @OrderField + ') from (
select
top ' + Cast(@PageSize*(@CurrentPage-1) as varchar) + ' ' + @OrderField + ' from ' + @
Table
Name + ' order by ' + @OrderField + ' asc) temp) order by ' + @OrderField + ' asc' end end else begin if @CurrentPage = 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' ' + @Condition + ' order by ' + @OrderField + ' asc' end if @CurrentPage > 1 begin set @SQL = '
select
top ' + Cast(@PageSize as varchar) + ' ' + @Fields + ' from ' + @
Table
Name + ' ' + @Condition + ' and ' + @OrderField + ' > (
select
max(' + @OrderField + ') from (
select
top ' + Cast(@PageSize*(@CurrentPage-1) as varchar) + ' ' + @OrderField + ' from ' + @
Table
Name + ' ' + @Condition + ' order by ' + @OrderField + ' asc] temp) order by ' + @OrderField + ' asc' end end end exec sp_executesql @SQL
MS-SQL Server
34,871
社区成员
254,637
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章