1
이 스레드 SQL Limit results per column value을 따라 가면서 분기별로 상위 10 개만을 표시하려고하지만 Perl에서 쿼리를 작성하는 데 문제가 있습니다.mysql 쿼리가 perl과 mysql에서 다른 결과를 실행했습니다.
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
펄 스크립트 :
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";
는 펄 스크립트의 결과를 내기 위해 노력하고 NUM 필드 값은 모든 행 1입니다. 나는 그 안의 수술이 효과가 없다고 제안하지만, 왜, 어떻게하는지는 모른다. 모든 도움을 주시면 감사하겠습니다.
감사합니다. ysth. 그것은 위대한 작품! – user2020692