有时需要让 select 返回的查询结果中存在一列实际在数据库表中并不存在的序号列,即在查询结果中额外增加自增的序号列。网上找了下资料,有 2 种方法可以实现:
1、使用数据库自带的序号函数实现
SQL Server 2005 中的函数 RANK,ROW_NUMBER 可以比较简单地实现这种需求,不过在 SQL Server 2000 中这两个函数不受支持。SQL Server 2000 中只能使用临时表的方法。
2、使用临时表实现
SQL 的 IDENTITY 函数可以提供自增的序号,但只能用在带有 into table 子句的 SELECT 语句中,所以如果可以使用临时表的情况下可以使用这种方法。
举例。先建立临时表,然后查询得到结果,最后删除临时表:
select id1=identity(int,1,1), id2=a,id3=b into temp00 frome table; select id1,id2,id3 from temp00; truncate table temp00; drop table temp00;
identity (data_type [ , seed , increment ] ) 函数用法:
- data_type:数据类型。可以是任何整数数据类型类别的数据类型(bit 数据类型除外),也可以是 decimal 数据类型。
- seed:要分配给表中第一行的整数值。为每一个后续行分配下一个标识值,该值等于上一个 IDENTITY 值加上 increment 值。不指定的话默认为 1。
- increment:要加到表中后续行的 seed 值上的整数值。不指定的话默认为 1。
参考资料: