我有一个名为x.txt的文本文件,其中包含以下数据:
emailid,hits
aa,100
bb,200
cc,300
dd,400
ee,500
aa,400
我的Perl代码是
use DBI;
$dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => ".",csv_sep_char => "," });
my $query = "SELECT emailid,sum(hits) tothits FROM x.txt group by emailid order by tothits desc";
my $sth = $dbh->prepare ($query);
$sth->execute ();
while (my $row = $sth->fetchrow_hashref) {
print $row->{emailid},"--",$row->{tothits},"\n";
}
$sth->finish ();
哪个返回
cc--300
bb--200
dd--400
aa--500
ee--700
这是怎么了
最佳答案
您的SQL看起来不错。排序未发生的原因似乎是由于limitations in DBD::CSV。
我试图查看它是否可以与DBD :: AnyData一起使用,但是无法识别tothits
并死亡。
看来您需要采取一种变通办法,例如fetchall然后进行排序。
关于perl - Perl-DBI::CSV排序问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7172612/