获取随机码不存在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的主要内容,如果未能解决你的问题,请参考以下文章