получить случайный код не существует MySQL

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 диаграмм в случайном порядке, и он не существует в моем коде. Надеюсь, мне помогут.

Теги:
not-exists

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

Это иногда выбирает одну запись, а иногда и записи. Если он не выбирает записи, вам нужно повторить запрос, я не могу придумать способ сделать так, чтобы он всегда выбирал одну запись.

  • 0
    Перфекет, и танки, я не знаю, могу ли я использовать двойной стол (фальшивый), очень хорошо, и танки много :)
  • 0
    если я только в случайном порядке, можешь ли ты мне помочь с этим? :)
Показать ещё 1 комментарий
-1

Попробуйте следующее:

select CONCAT(char(rand()*26+65),char(rand()*26+65));
  • 0
    да? теперь мне нужно только искать код, когда он не используется в моей кодовой таблице. :)
  • 1
    @NeoNmaN: я сомневаюсь, что это возможно сделать простым SQL - вам, вероятно, понадобится хранимая процедура, которая будет генерировать эти идентификаторы в цикле, пока не найдет уникальный

Ещё вопросы

Сообщество Overcoder
Наверх
Меню