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

Arb*_*aaz -1 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
Run Code Online (Sandbox Code Playgroud)

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

1    | ABC123        |AI-2000
2    | ABC123        |AI-2025
3    | ABC123        |AI-5623
4    | ab3333        |AI-2011
5    | ab565235      |AI-2562
6    | XYZ12334      |AI-5625
Run Code Online (Sandbox Code Playgroud)

Mah*_*mal 5

尝试这个:

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

现场演示