如何使用sql生成随机数?

时间:2012-11-19 09:18:54

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

  

可能重复:
  How do I generate random number for each row in a TSQL Select?

我将excel表导入sql数据库,db表包含以下列: srno | passportnumber | FLIGHTNUMBER

现在当我导入excel表时,srno在导入后保持为NULL。现在我需要使用sql查询更新此Srno列,使其具有随机数或非随机序列号,但它应具有相同的srno值,其中护照号码相同,我的意思是: 如果护士编号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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

然后使用Passports ID(在您的情况下" srno")更新Flights表,并删除Column" passportnumber"