Perl DBI / PostgreSQL min函数

时间:2015-03-09 19:13:02

标签: perl postgresql dbi

我正在使用Perl DBI / PostgreSQL,我想在列中检索最小值但是我在以下代码中获得了“在连接(。)或字符串'消息中使用未初始化的值$ id:

my $id = 0;
$sth = $dbh->prepare("
    select min(col_id)
    from table
    where col_num = x
") or die $dbh->errstr;
$sth->execute() or die $dbh->errstr;
while (my $results = $sth->fetchrow_hashref) {
    $id = $results->{col_id};
}
print "$id";

它适用于postgresql编辑器,但不适用于perl。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您的问题是结果集中没有col_id列。您正在计算min(col_id),因此$results将拥有min密钥,而不是col_id密钥。你想说:

$id = $results->{min};

提取您正在寻找的价值。或者您可以在SELECT中添加别名:

$sth = $dbh->prepare("
    select min(col_id) as min_col_id
    from table
    where col_num = x
") or die $dbh->errstr;

并在查看$results时使用该名称:

$id = $results->{min_col_id};