У меня есть этот 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 диаграмм в случайном порядке, и он не существует в моем коде. Надеюсь, мне помогут.
Вам нужно выбрать 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 );
Это иногда выбирает одну запись, а иногда и записи. Если он не выбирает записи, вам нужно повторить запрос, я не могу придумать способ сделать так, чтобы он всегда выбирал одну запись.
Попробуйте следующее:
select CONCAT(char(rand()*26+65),char(rand()*26+65));