【发布时间】:2015-05-27 07:34:31
【问题描述】:
我使用了以下查询,用于生成不在 mysql 表中的随机值。
SELECT FLOOR( RAND()*1000 + 50 ) AS temp FROM tempcode WHERE 'temp' NOT IN ( SELECT code FROM tempcode ) LIMIT 1
但是当我使用运行不正常的虚拟数据将值减小到 RAND()*4 以检查目的时。
SELECT FLOOR( RAND()*1000 + 50 ) AS temp FROM tempcode WHERE 'temp' NOT IN ( SELECT code FROM tempcode ) LIMIT 1
原因是什么?有什么建议可以生成不在 mysql 表中的值吗?
【问题讨论】:
-
因为您只生成从 0 到 3 的数字 - 没有太多随机性和很多冲突。也许
UUID()会满足您的需求。 -
@HoboSapiens 如何在 mysql 中使用 UUID()?如果所有数据都是随机生成的值,如果它已经在表中它应该返回null??
-
@phpPhil “尝试用反引号包裹 temp”是什么意思。可以发给我示例代码吗?
-
SELECT UUID()可以。根据定义,UUID 应该是唯一的。 -
没关系 - 我删除了评论,因为它不正确并且不能解决您的问题。这是基于
'temp'看起来不像正确的语法,但according to this 是。很抱歉造成混乱。