即时生成唯一标识
问题描述:
我使用此SQL查询来创建对列唯一的新标识。我想很久以前我从另一个StackOverlow的帖子中得到了这个想法。但它不起作用,我不知道为什么。我将生成100-200个ID(每个数据库添加到数据库中),并且有时候会有重复结果。即时生成唯一标识
有没有什么明显的可以关闭此查询?
SELECT FLOOR(RAND() * 99999) AS random_num
FROM listings
WHERE 'random_num' NOT IN (SELECT identifier FROM listings)
LIMIT 1
答
我想你打算:
SELECT l.*
FROM (SELECT FLOOR(RAND() * 99999) AS random_num
FROM listings l
) l
WHERE random_num NOT IN (SELECT identifier FROM listings)
LIMIT 1
您的代码具有'random_num'
这是一个字符串,不可能匹配的数字标识符。我想你应该只使用auto_increment
。
+0
是的,那就是票。简单的错误,但我只是看不到它 –
为什么你就不能使用自动增量字段? – maSTAShuFu
这是一种情况,我不希望下一行很容易猜到 –