ランダムに一つのROWをとってくる
package App::Schema::Table::Hoge; use strict; use warnings; use base qw/DBIx::Class::ResultSet/; sub get_random_row { my ($self) = @_; my @ids = $self->search( {}, { select => [ qw/ id / ], } )->get_column('id')->all; my $id = $ids[ int( rand( scalar @ids ) ) ]; $self->find($id); } 1;
こんな感じかなあ。
SELECT * FROM hoge ORDER BY rand() LIMIT 1;