我正在使用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。任何帮助将不胜感激!
答案 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};