我有一个表,并希望使用1个mysql查询来给它赋予随机唯一值。 表结构等:随机唯一的Mysql ID
id | unique_id
1 | 1
2 | 5
3 | 2
4 | 7
等
UNIQUE_ID是整数(10)无符号
所以我想fullfill UNIQUE_ID场与唯一的随机值(不为1,5,2,7我的例如)每次。
Algorytm是:
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给出只是举例,它很容易用这种乘数重现这个问题
UNIQUE_ID必须查询 – freento
之后独一无二的 - 或全部 - 只是改变了限制条款。您问题中的示例仅返回一个ID。删除限制并获得每个ID的唯一编号(来自ID集合 - 这对于0-8示例显然不起作用)。 –
他们为什么是独一无二的? select from order by rand() limit 1 将返回重复次数soometimes – freento