SQL Server中选出指定范围行的SQL语句写法

在数据库查询的时候,我们有时有这样的需求,就是要找出数据表里指定范围行内的数据记录,比如说要找出数据表里第10行到第20行的这10条数据,那么我们怎么来实现呢? 
    按照通常的方法是实现不了的,我们得借助于临时表以及一个函数来实现

代码如下:
      Select no=Identity(int,1,1),* Into #temptable From dbo.teacher_info order by teacher_name  --利用Identity函数生成记录序号
      Select * From #temptable Where no>=10 And no < 20
      Drop Table #temptable  --用完后删除临时表

       IDENTITY(函数)(Transact-SQL)    --参见MSDN
      只用于在带有 INTO table 子句的 SELECT 语句中将标识列插入到新表中。
      尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。
      语法
      IDENTITY (data_type [ , seed , increment ] ) AS column_name
      参数
      data_type
      标识列的数据类型。标识列的有效数据类型可以是任何整数数据类型类别的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。
      seed 
      要分配给表中第一行的整数值。为每一个后续行分配下一个标识值,该值等于上一个IDENTITY 值加上increment 值。如果既没有指定seed,也没有指定increment ,那么它们都默认为 1。
       increment
       要加到表中后续行的 seed 值上的整数值。
       column_name
       将插入到新表中的列的名称。
        返回类型
       返回与 data_type 相同的数据类型。
        备注 
       因为该函数在表中创建一个列,所以必须用下列方式中的一种在选择列表中指定该列的名称:
       --(1)
       SELECT IDENTITY(int, 1,1) AS ID_Num
       INTO NewTable
       FROM OldTable
       --(2)
       SELECT ID_Num = IDENTITY(int, 1, 1)
       INTO NewTable
       FROM OldTable
 
       示例 
       以下示例将来自AdventureWorks数据库中Contact 表的所有行都插入到名为NewContact 的新表。使用IDENTITY 函数在
NewContact 表中从100而不是 1 开始编标识号。
       USE AdventureWorks;
       GO
       IF OBJECT_ID (N'Person.NewContact', N'U') IS NOT NULL
       DROP TABLE Person.NewContact;
       GO
       ALTER DATABASE AdventureWorks SET RECOVERY BULK_LOGGED;
       GO
       SELECT  IDENTITY(smallint, 100, 1) AS ContactNum,
                       FirstName AS First,
                       LastName AS Last
        INTO Person.NewContact
        FROM Person.Contact;
        GO
        ALTER DATABASE AdventureWorks SET RECOVERY FULL;
        GO
        SELECT ContactNum, First, Last FROM Person.NewContact;
        GO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值