Hier ist ein kurzes Experiment, um zu sehen, was passiert.
create function determin_rand (i integer)
returns float DETERMINISTIC
return rand();
create function not_determin_rand (i integer)
returns float
return rand();
select determin_rand(1) as d1 , determin_rand(1) as d2,
not_determin_rand(1) as nd1, not_determin_rand(1) as nd2
0.00850549154 0.831901073456 0.133989050984 0.174242004752
Da die Werte unterschiedlich sind, wird die Funktion jedes Mal aufgerufen. In der ersten Funktion habe ich es für deterministisch erklärt, aber es hat keinen Unterschied gemacht.
Ich habe ein sqlfiddle für Sie erstellt, damit Sie es mit verschiedenen Versionen von mysql ausprobieren können.
http://sqlfiddle.com/#!2/a8536/2