方法一:create table person(
id int not null,
name varchar(32) not null
)
insert into person
select 1,'zhangsan' union all
select 2,'lisi' union all
select 3,'王五' union all
select 4 '刘六'
select identity(int,1,1) as 顺序, name into #person from person order by name;
select * from #person order by 顺序;
drop table #person;
说明:sql server中实现排序后添加一显示顺序列。
IDENTITY(属性):在表中创建一个标识列。此属性与 CREATE TABLE 及 ALTER TABLE Transact-SQL 语句一起使用。
显示结果:
顺序 name
1 lisi
2 zhangsan
3 刘六
4 王五
方法二:
select count(*)as 顺序,p.name
from person p,person b
where p.name >= b.name
group by p.name
order by p.name --desc
或:
select count(*)as 顺序,p.name
from person p,(select name from person ) b
where p.name >= b.name
group by p.name
说明:此方法有局限性,有重名的时候结果就不是我们想要的预期结果了。修改后的:
select count(*)as 顺序,p.name
from (select distinct name,id from person) p,(select distinct name from person) b
where p.name >= b.name
group by p.name
order by p.name
此方法的缺点是重名的被过滤掉。因此第一种方法是最好的。
请大家指教谢谢。