my ($name, $source); $sth->bind_columns(\$name, \$source); my %by_source; push @{$by_source{$source}}, $name while $sth->fetch; $sth->finish; if(scalar keys %by_source) { foreach my $s(sort {$a <=> $b} keys %by_source) { return shift @{$by_source{$s}}; } }