今天在使用identity函数生成临时表的时候出现一个关于排序的问题.
select
identity
(
int
,
1
,
1
) myrow_id,billno
into # temp
from myTable
order by myTable.myrow_id
into # temp
from myTable
order by myTable.myrow_id
我想按照myrow_id排序然后插入临时表#temp,并利用identity(int,1,1)函数生成行号列,结果#temp表里数据始终未能按照myrow_id排序。
后来我想是不是由于identity(int,1,1)的别名和排序列名称重复,导致排序时sql把排序列当成了identity(int,1,1)呢?然后我把identity(int,1,1)的别名改为了id,问题解决,插入#temp中的结果集排序正常。
结论:在使用identity函数生成临时表的时候,如果需要排序,那么identity的别名不能与排序列名称相同,否则排序失效。