【发布时间】:2009-12-21 17:02:35
【问题描述】:
我在网上找到了一个 SELECT 示例。 当我在我的脚本中尝试它时,我收到了这个错误消息:
Specifying DISTINCT when using aggregate functions isn't reasonable - ignored. at /usr/lib/perl5/site_perl/5.10.0/SQL/Parser.pm line 496.
#!/usr/bin/perl
use warnings;
use strict;
use DBI;
my $dbh = DBI->connect( "DBI:CSV:", undef, undef, { RaiseError => 1, AutoCommit => 1 } );
my $table = 'artikel';
my $array_ref = [ [ 'a_nr', 'a_name', 'a_preis' ],
[ 12, 'Oberhemd', 39.80, ],
[ 22, 'Mantel', 360.00, ],
[ 11, 'Oberhemd', 44.20, ],
[ 13, 'Hose', 119.50, ],
];
$dbh->do( "CREATE TEMP TABLE $table AS IMPORT(?)", {}, $array_ref );
my $sth = $dbh->prepare( "SELECT DISTINCT a_name FROM $table" );
$sth->execute();
$sth->dump_results();
$dbh->disconnect();
SELECT DISTINCT 是否不适用于 DBD::CSV 或者我的脚本有问题?
编辑: 输出是
'Oberhemd'
'Mantel'
'Oberhemd'
'Hose'
4 rows
我认为应该是
'Oberhemd'
'Mantel'
'Hose'
3 rows
已安装的版本:
Perl : 5.010000 (x86_64-linux-thread-multi)
OS : linux (2.6.31)
DBI : 1.609
DBD::Sponge : 12.010002
DBD::SQLite : 1.25
DBD::Proxy : 0.2004
DBD::Gofer : 0.011565
DBD::File : 0.37
DBD::ExampleP : 12.010007
DBD::DBM : 0.03
DBD::CSV : 0.26
【问题讨论】:
-
你真的应该考虑迁移到 perl5.10.1。它修复了许多在 5.10.0 中不太正确的问题。
-
有趣。我收到 Perl 5.10.0、
DBD::CSV0.26、SQL::Parser1.23 和DBI1.609 的警告(虽然是工作代码)。听到 perl 本身是罪魁祸首,我会感到惊讶。 -
我尝试使用 perl v5.8.8 并得到 4 行。