Я стараюсь следить за этой нитью SQL Limit results per column value, чтобы показывать только топ-10 на каждую ветку по количеству, но у меня возникли проблемы с написанием запроса в Perl.mysql query имеет другой результат, выполненный в perl и mysql
Если я запустил запрос в MYSQL Front, он отображает топ-10 на каждую ветвь на основе суммы. Но когда я помещаю запрос в Perl с модулем DBI, он выводит все строки. Что-то не так в моем Perl Script?
Запрос Mysql:
select name, branch, amount from (select name, branch, amount, if(@mainbranch = branch, @num := @num + 1, (@num := 0 || @mainbranch := branch)) as num from branch_amount where branch in (102, 106, 0) order by branch, amount desc) a where num<=10
Perl-скрипт:
use DBI;
my $db=DBI->connect("DBI:mysql:$database;host=$host;user=$user;password=$passwd")
my $query = "select name, branch, amount from (select name, branch, amount, if(\@mainbranch = branch, \@num := \@num + 1, (\@num := 0 || \@mainbranch := branch)) as num from branch_amount where branch in (102, 106, 0) order by branch, amount desc) a where num<=10";
$db->prepare("$query");
$sth->execute() or die "$query";
попытке вычислить результат с Perl Script, а значение поля Num равен 1 для всех строк. Я предлагаю, чтобы операция внутри if не работала, но я не знаю, почему и как. Вся помощь будет оценена
Thanks ysth. Он отлично работает! – user2020692