4
我对mySQL数据库的写入存储函数的主题相当陌生,因此我不确定我是否可以尝试在这里完成任务。在mysql的存储函数里SELECT语句中使用变量作为OFFSET
我需要一个函数,它将从表中的随机行返回一列。我不希望使用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在与身体一样,创建函数抛出一个错误。但是当我使用硬编码的数字作为OFFSET时,它工作得很好。
有人可以对这个问题有所了解吗?
我在windows上运行MySQL 5.0.45。 5.5前
感谢
你能解释为什么“我不想使用ORDER BY RAND()方法来做到这一点”? – 2008-11-19 00:58:19
因为ORDER BY RAND()方法对于性能来说很糟糕。请注意他的桌子上有120,000行。 – 2008-11-19 01:07:36