今天在使用identity函数生成临时表的时候出现一个关于排序的问题.
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
我想按照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的别名不能与排序列名称相同,否则排序失效。