我试着关注这个话题 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 内的操作不起作用,但我不知道为什么以及如何。所有帮助将不胜感激
最佳答案
将此放在准备之前有帮助吗?
$db->do('set @num=-1');
$db->do('set @mainbranch=-1');
关于mysql 查询在 perl 和 mysql 中执行的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19086099/