mysql 查询在 perl 和 mysql 中执行的结果不同

标签 mysql perl dbi

我试着关注这个话题 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/

相关文章:

c# - SQL - 创建的数据库位置

mysql - 正则表达式复制粘贴行并在每个行的末尾添加递增的数字

postgresql - 在 DBD::Pg 中是否有等效的 $dbh->sqlite_create_function

sql - select count(*) 不适用于 perl DBI

php - 将表单插入数据库

php - 如何从数据库中选择不同的列,每个列给出另一个查询结果的总和(或类似的)?

perl - 无法获取作为模块中引用传递的哈希值

perl - -> 运算符在 Perl 中有什么作用?

linux - 如何使用 sed/awk/perl 从特定列中删除 n 个字符

sql - Perl、DBI 和 SQL : Why NOT does not work in some SQL queries?