我有一个名为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/

10-12 17:24