このスレッドSQL Limit results per column valueに従って、金額に基づいてブランチごとにトップ 10 のみを表示しようとしましたが、Perl でクエリを作成するのに問題があります。
MYSQL Front でクエリを実行すると、金額に基づいてブランチごとにトップ 10 になります。しかし、DBI モジュールを使用して Perl でクエリを実行すると、すべての行が返されます。Perl スクリプトに何か問題がありますか?
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 スクリプトから結果を計算しようとしましたが、num フィールドの値はすべての行で 1 です。if 内の操作が機能しないことをお勧めしますが、その理由と方法はわかりません。すべての助けをいただければ幸いです