添加到sql表的随机数

时间:2015-12-08 09:56:43

标签: sql random

我有一个包含4列的表

-----------------------
|data1|data2|data3|key|
-----------------------
|d1   | d2  | d3  | k1|
-----------------------
|d3   |d4   | d5  | k2|
-----------------------
|d6   | d7  | d8  | k1|
-----------------------
|d9   |d10  | d11 | k2|
-----------------------

我需要基于这个具有相同列+ id的新表生成一个新表。 Id应该是随机的int64。相同的密钥应该具有相同的ID 例如,对于上表,它可能是:

----------------------------
|data1|data2|data3|key| id |
----------------------------
|d1   | d2  | d3  | k1|1234|
---------------------------
|d3   |d4   | d5  | k2|5678|
----------------------------
|d6   | d7  | d8  | k1|1234|
----------------------------
|d9   |d10  | d11 | k2|5678|
----------------------------

我很乐意得到建议

  

UPD

GUID是128位,我需要64位。我支持IRAND

2 个答案:

答案 0 :(得分:0)

试试这个, 它会给出一个随机数。 您可以使用concat作为解决方案。

select  ABS(CHECKSUM(NewId())) 

答案 1 :(得分:0)

又快又脏:

SELECT S.*, I.`id`
FROM `Table1` AS S
   INNER JOIN (
      SELECT `key`, ROUND((POW(2,63)-1) * RAND()) AS id
      FROM
        (SELECT DISTINCT `key`
         FROM `Table1`) AS lKeys 
   ) AS I ON S.`key` = I.`key`