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