【问题标题】:mysql query has different result executed in perl and mysqlmysql查询在perl和mysql中执行的结果不同
【发布时间】:2013-10-05 20:05:13
【问题描述】:

我尝试关注这个线程 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 内的操作不起作用,但我不知道为什么以及如何。我们将不胜感激所有帮助

【问题讨论】:

    标签: mysql perl dbi


    【解决方案1】:

    把这个放在你的准备之前有用吗?

    $db->do('set @num=-1');
    $db->do('set @mainbranch=-1');
    

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 2021-11-27
      • 2013-06-23
      相关资源
      最近更新 更多