即时生成唯一 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
我正在使用这个 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