2011-01-06 47 views
7

我想创建一个SELECT查询语句自动编号..喜欢..自动编号的SELECT语句在SQL Server

select * from tbl1 

会给我一切从表。

我希望得到的结果是...

1   data 
2   data 
3   data 

所以,我该怎么做才能得到这个数字??

如..

select (for autonumber), * from tbl1 

在我的表中的数据会重复(没有独特的数据)

回答

19

使用ROW_NUMBER

SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 

要根据行号使用过滤结果这个:

SELECT * FROM 
(
    SELECT ROW_NUMBER() OVER (ORDER BY col1) AS rn, * FROM tbl1 
) T1 
WHERE rn = 5 
+0

啊..这是正确的答案。 我想要做......喜欢.. SELECT ROW_NUMBER()OVER(ORDER BY col1)AS rn,* FROM tbl1 where rn = 5;显然它不能这样工作..任何解决方案? – william 2011-01-06 06:02:43

0

您可能需要查找身份的偏移量,例如第二个表的最后一个ID:

DECLARE @lastAutoID int 
SET @lastAutoID = abs((Select max(convert(float,[ConsID])) 
FROM [RXPIPEDB]...[consumption])) 

然后使用ROW_NUMBER():