簡體   English   中英

mysql中的隨機數

[英]Random number in mysql

我有一個拼貼簽名的題詞 mysql 表。 該表根據學生想要學習的簽名數量重復了學生的文檔。 我想為每個學生分配一個隨機數,所以我使用這個:

SET @rnd := 0;
UPDATE `productData` SET `randCol`= (@rnd := @rnd + 1)
ORDER BY RAND();

但是由於“文檔編號”(文檔字段)被重復,所以我最終給同一個人(相同的文檔編號)提供了不同的隨機數

結果是這樣的:

randomNum-document-field1-field2-field3-field4-field5
    190-1780859-75-1035-CURRICULAR-0-3
    91-1780859-75-1954-OPTATIVA-25-0
    7154-1780859-75-1025-CURRICULAR-0-3
    6424-1780859-75-1910-OPTATIVA-LIBRE-0
    3561-1780859-75-1948-OPTATIVA-60-0
    6028-1780859-75-2105P-CURRICULAR-0-4
    4936-1780859-75-2100P-CURRICULAR-0-4
    6787-1780859-75-2095-CURRICULAR-0-3
    4392-1780859-75-4170-CURRICULAR-0-3
    1858-1780859-75-1932-OPTATIVA-30-0
    3350-1780859-75-3140-CURRICULAR-0-4
    3974-1780859-75-2190-CURRICULAR-0-4
    2676-1780859-75-2115P-CURRICULAR-0-4
    1527-1921177-93-2115P-CURRICULAR-0-4
    6822-1921177-93-2095-CURRICULAR-0-3
    540-1921177-93-2105P-CURRICULAR-0-4
    3770-1921177-93-2100P-CURRICULAR-0-4
    3128-2020703-269-3140-CURRICULAR-0-4
    4386-2020703-269-4160-CURRICULAR-0-3
    5328-2762533-249-3020P-CURRICULAR-0-28
    6356-2971526-355-1954-OPTATIVA-25-0
    1287-3102055-55-1021-CURRICULAR-0-25
    1699-3102055-55-2095-CURRICULAR-0-3
    4759-3102055-55-2190-CURRICULAR-0-4
    4420-3102055-55-3140-CURRICULAR-0-4
    695-3584576-153-4160-CURRICULAR-0-3

但我希望對同一個文檔使用相同的隨機數。 假設隨機數“190”應該分配給“1780859”文檔等等......

任何幫助將非常受歡迎......

非常感謝您的寶貴時間...

一種方法是使用join並預先計算每個document的值:

UPDATE productData pd
       (SELECT document, row_number() over (order by rand()) as seqnum
        FROM productdata
        group by document
       ) d
       ON pd.document = d.document
    SET pd.randCol = d.seqnum;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM