动态生成唯一ID

时间:2017-05-26 01:48:14

标签: mysql sql uniqueidentifier

我使用此SQL查询来创建列唯一的新ID。我想很久以前我从另一个StackOverlow帖子中得到了这个想法。但它不起作用,我不知道为什么。我将生成100-200个ID(随着数据库的增加逐个添加到数据库中),我有时会得到重复项。

这个查询有什么明显可以解决的问题吗?

SELECT FLOOR(RAND() * 99999) AS random_num
FROM listings 
WHERE 'random_num' NOT IN (SELECT identifier FROM listings)
LIMIT 1

2 个答案:

答案 0 :(得分:0)

我想你打算:

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

答案 1 :(得分:0)

对于postgresql,您可以使用此站点中的技术:id-generator-for-postgresql