获取随机码不存在mysql

Posted

技术标签:

【中文标题】获取随机码不存在mysql【英文标题】:get random code not exists mysql 【发布时间】:2009-12-07 12:53:09 【问题描述】:

我有这个 sql

select concat( char(FLOOR(97+ RAND()*26))
                   , char(FLOOR(97+ RAND()*26))
                   , FLOOR(100+ RAND()*999)
                   , char(FLOOR(97+ RAND()*26))) AS randomcode 
WHERE NOT EXISTS (
       SELECT *
       FROM table
       WHERE code_felt = randomcode );

但我无法让它工作。有人知道我在这里做错了什么吗?

我需要随机制作一个 6 图表代码,它在我的代码中不存在。希望能帮到我。

【问题讨论】:

【参考方案1】:

您必须从某处选择。您的 SELECT 没有表名。由于您实际上并未从表中选择随机值,因此您应该使用 DUAL(这是一个“假”表):

select concat(
  char(97+ RAND()*26),
  char(97+ RAND()*26),
  floor(100+rand()*900),
  char(97+ RAND()*26)) 
as randomcode from dual
  WHERE NOT EXISTS (SELECT * FROM table WHERE code_felt = randomcode );

这有时会选择一条记录,有时不会选择记录。如果它没有选择记录,你必须重复查询,我想不出一种方法让它总是选择一条记录。

【讨论】:

完美,我不知道我可以使用双桌(假货)的坦克,非常好,坦克很多:) 如果我只在随机车中使用 whst a-z,你能帮我解决这个问题吗? :) Unknown column 'randomcode' in 'where clause'。为什么这是赞成甚至解决方案? 我写这篇文章已经 11 年了。它确实奏效了。但它不能移植到所有数据库。你的数据库是mysql吗?【参考方案2】:

试试这个:

select CONCAT(char(rand()*26+65),char(rand()*26+65));

【讨论】:

是吗?现在我只需要在代码表中未使用代码时搜索代码。 :) @NeoNmaN:我怀疑是否有可能完成纯 SQL - 您可能需要一个存储过程来在循环中生成这些 id,直到找到一个唯一的

以上是关于获取随机码不存在mysql的主要内容,如果未能解决你的问题,请参考以下文章

不存在的人用Python获取生成随机头像,还不侵权

在指定数字范围内,随机获取n个不重复数字

Mysql,检查行是不是存在,如果它确实获取值,如果不插入

mysql获取条件中描述的所有记录,即使表中不存在

MySQL内部连接查询以获取其他表中不存在的记录

mysql 获取一张表中, 另一张表不存在的数据