0

我有这个 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 图表代码,它在我的代码中不存在。我希望我能得到帮助。

4

2 回答 2

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 );

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

于 2009-12-07T13:06:00.243 回答
-1

试试这个:

select CONCAT(char(rand()*26+65),char(rand()*26+65));
于 2009-12-07T12:57:15.407 回答