Хм, я действительно думал, что это сработает, но вроде нет. Я все равно размещаю его, на случай, если он вдохновит других ...
select * from test
order by field(nombre,
(select group_concat(distinct concat('\'',nombre,'\'') order by rand()) from test)
);
Кажется, работает ...
select @i:= group_concat(distinct nombre order by rand()) from test;
select *,find_in_set(nombre,@i) n from test order by n,orden