有没有人碰巧记住用于生成内置SQL Server 2000的顺序行号的函数名。
答案 0 :(得分:15)
如果您正在使用GUID,这应该很简单,如果您要查找整数ID,则必须等待另一个答案。
SELECT newId() AS ColId, Col1, Col2, Col3 FROM table1
newId()将为您生成一个新的GUID,您可以将其用作自动生成的id列。
答案 1 :(得分:14)
这适用于SQL Server 2008。
select top 100 ROW_NUMBER() OVER (ORDER BY tmp.FirstName) ,* from tmp
干杯
答案 2 :(得分:13)
IDENTITY(int,1,1)应该这样做。在SQL 2000中,我只是将结果放在临时表中并查询后缀。
答案 3 :(得分:13)
这是一个简单的方法,它按行排序后对行进行排名,即插入到表中。在SELECT语句中,只需添加字段
ROW_NUMBER() OVER (ORDER BY CAST(GETDATE() AS TIMESTAMP)) AS RowNumber.
答案 4 :(得分:1)
您是否希望记录集返回一个递增的整数列?如果是这样的话: -
--Check for existance
if exists (select * from dbo.sysobjects where [id] = object_id(N'dbo.t') AND objectproperty(id, N'IsUserTable') = 1)
drop table dbo.t
go
--create dummy table and insert data
create table dbo.t(x char(1) not null primary key, y char(1) not null)
go
set nocount on
insert dbo.t (x,y) values ('A','B')
insert dbo.t (x,y) values ('C','D')
insert dbo.t (x,y) values ('E','F')
--create temp table to add an identity column
create table dbo.#TempWithIdentity(i int not null identity(1,1) primary key,x char(1) not null unique,y char(1) not null)
--populate the temporary table
insert into dbo.#TempWithIdentity(x,y) select x,y from dbo.t
--return the data
select i,x,y from dbo.#TempWithIdentity
--clean up
drop table dbo.#TempWithIdentity
答案 5 :(得分:0)
这可能是你在找什么?
从TABLE
中选择NEWID()*
答案 6 :(得分:0)
您可以在SQL2000中直接执行此操作,具体取决于Microsoft的页面:http://support.microsoft.com/default.aspx?scid=kb;en-us;186133
select rank=count(*), a1.au_lname, a1.au_fname
from authors a1, authors a2
where a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname
group by a1.au_lname, a1.au_fname
order by rank
这种方法的唯一问题是(正如Jeff在SQL Server Central上所说的那样)它是一个三角形连接。所以,如果你有十条记录,这将是快速的,如果你有一千条记录它会很慢,而且有一百万条记录它可能永远不会完成!
有关三角形连接的更好解释,请参见此处:http://www.sqlservercentral.com/articles/T-SQL/61539/
答案 7 :(得分:0)
Select (Select count(y.au_lname) from dbo.authors y
where y.au_lname + y.au_fname <= x.au_lname + y.au_fname) as Counterid,
x.au_lname,x.au_fname from authors x group by au_lname,au_fname
order by Counterid --Alternatively that can be done which is equivalent as above..