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

どこかからFROMを選択する必要があります。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 );

これにより、1つのレコードが選択される場合と、レコードが選択されない場合があります。レコードが選択されていない場合は、クエリを繰り返す必要があります。常に1つのレコードを選択するようにする方法は考えられません。

于 2009-12-07T13:06:00.243 に答える
-1

これを試して:

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