Frage

Ich habe diese 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 );

Aber ich kann es nicht bekommen zu arbeiten. Hat jemand wissen, was ich hier falsch mache?

Ich brauche einen 6-Chart-Code in zufälliger zu machen und es existiert nicht in meinem Code. Ich hoffe, ich kann geholfen werden.

War es hilfreich?

Lösung

Sie haben von irgendwo zu wählen. Ihre SELECT keinen Tabellennamen. Da Sie nicht wirklich zufällige Werte aus einer Tabelle auswählen, sollten Sie DUAL verwenden (dies ist eine ‚fake‘ Tabelle):

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

Dies wird manchmal wähle einen Datensatz, manchmal keine Aufzeichnungen. Wenn es keine Datensätze auswählt, müssen Sie die Abfrage wiederholen, ich kann nicht einen Weg finden, um es immer einen Datensatz auswählen.

Andere Tipps

Versuchen Sie folgendes:

select CONCAT(char(rand()*26+65),char(rand()*26+65));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top