如何使用sql查询生成序列号并用它更新表?

时间:2012-11-19 10:21:13

标签: sql sql-server sql-server-2008

我有一个sql表,看起来像:

srno | passportnumber|flightnumber
Null | ABC123        |AI-2000
Null | ab3333        |AI-2011
Null | ab565235      |AI-2562
Null | ABC123        |AI-2025
Null | ABC123        |AI-5623
Null | XYZ12334      |AI-5625

我需要一个查询来按护照编号对它们进行排序,以便重复的护照编号rpws彼此相邻,然后我想更新表格以插入序列号。 结果应该是这样的:

1    | ABC123        |AI-2000
2    | ABC123        |AI-2025
3    | ABC123        |AI-5623
4    | ab3333        |AI-2011
5    | ab565235      |AI-2562
6    | XYZ12334      |AI-5625

1 个答案:

答案 0 :(得分:4)

试试这个:

;WITH Ranked
AS
(
   SELECT *, ROW_NUMBER() OVER(ORDER BY passportnumber) row_num
   FROM Tablename
) 
UPDATE Ranked
SET srno = row_num;

Live Demo