即时生成唯一 ID

Generating unique IDs on the fly

我正在使用这个 SQL 查询来创建一个对列唯一的新 ID。我想我很久以前从另一个 StackOverlow post 那里得到了这个想法。但它不起作用,我不确定为什么。我将生成 100-200 个 ID(将每个 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

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