Я довольно новичок в вопросе написания хранимой функции для базы данных mySQL, поэтому я не уверен, что то, что я пытаюсь сделать здесь, возможно вообще.Использование переменных как OFFSET в статусах SELECT в хранимых функциях mysql
Мне нужна функция, которая вернет столбец из случайной строки из таблицы. Я не хочу использовать ORDER BY метод RAND(), чтобы сделать это, а я хотел бы сделать это так:
DECLARE MAX_COUNT INT DEFAULT 120000;
DECLARE rand_offset INT;
DECLARE str_rnd_word VARCHAR(255);
SET rand_offset = FLOOR((RAND() * MAX_COUNT));
SELECT word INTO str_rnd_word FROM all_words LIMIT 1 OFFSET rand_offset ;
RETURN str_rnd_word;
MySQL выдает ошибку при создании функции с телом, как это. Но когда я использую hard-code число как OFFSET, он работает нормально.
Может кто-то пролить свет на предмет, пожалуйста.
Я запускаю MySQL 5.0.45 на окне окна.
Благодаря
Можете ли вы объяснить, почему «я не хочу использовать метод ORDER BY RAND() для этого»? – 2008-11-19 00:58:19
Поскольку метод ORDER BY RAND() ужасен для производительности. Обратите внимание, что он имеет 120 000 строк в своем столе. – 2008-11-19 01:07:36