テーブルがあり、1 つの mysql クエリを使用してランダムな一意の値を生成したいと考えています。次のようなテーブル構造:
id | unique_id
1 | 1
2 | 5
3 | 2
4 | 7
等
unique_id は整数 (10) 符号なし
したがって、毎回 unique_id フィールドに一意のランダム値 (私の例では 1、5、2、7 ではありません) を入力したいと考えています。
アルゴリズムは次のとおりです。
1. Get 1 unique random value, which will not have duplicates in unique_id field
2. Create new row with unique_id = result of 1 query
私は試した
SELECT FLOOR(RAND() * 9) AS random_number
FROM table
HAVING random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1
しかし、それは一意の値ではありません..
注: 乗数 = 9 は単なる例です。このような乗数を使用すると、この問題を簡単に再現できます。