2

可能重复:
如何为 TSQL Select 中的每一行生成随机数?

我正在将 excel 表导入 sql 数据库,db 表有以下列: srno | 护照号|航班号

现在,当我导入 excel 表时,导入后 srno 保持为 NULL。现在我需要使用 sql 查询更新这个 Srno 列,使其具有随机数或非随机序列号,但它应该具有相同的 srno 值,其中护照号码相同我的意思是:如果 passportnumber abc123 每次出现 4 次srno 必须具有相同的值,例如:

srno | passportnumber|flightnumber
12   | ab32434       |AI-2011
13   | ab565235      |AI-2562
14   | ABC123        |AI-2025
14   | ABC123        |AI-2000
14   | ABC123        |AI-5623
15   |XYZ12334       |AI-5625
4

2 回答 2

2
with cte as (
  select DENSE_RANK() OVER (ORDER BY passportnumber) as rank,
    srno
  from table)
update cte
  set srno = rank;

这将按照护照的顺序给出序列号。修改它以根据预加载随机数的查找字典提供真正的随机数是微不足道的,我将其留作练习。

于 2012-11-19T09:21:28.497 回答
0

如果相同的护照号码出现不止一次,那么首先您应该考虑规范化您的数据,创建一个包含唯一护照号码和一个 ID 列且身份增量为 ON 的表。

然后使用 Passports ID(在您的情况下为“srno”)更新航班表,并删除列“passportnumber”

于 2012-11-19T09:37:54.887 回答