我有一个表,想使用 1 个 mysql 查询为其生成随机唯一值。表结构如:
id | unique_id
1 | 1
2 | 5
3 | 2
4 | 7
ETC
unique_id 是 integer(10) 无符号
所以我想每次都用唯一的随机值(在我的例子中不是 1、5、2、7)填充 unique_id 字段。
算法是:
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
但它不会产生唯一的价值..
注意:multiplier = 9 仅作为示例给出,使用这样的乘数很容易重现此问题