有一个SQL SELECT查询,我如何获得项目数?

Rom*_*dan 1 sqlite perl dbi

我正在使用Dancer框架在Perl中编写一个Web应用程序.数据库是sqlite,我使用DBI进行数据库交互.

我对select语句很好,但我想知道有没有办法计算选定的行.

我有

get '/' => sub {
    my $content = database->prepare(sprintf("SELECT * FROM content LIMIT %d",
            $CONTNUM));
    $content->execute;
    print(Dumper($content->fetchall_arrayref));
};
Run Code Online (Sandbox Code Playgroud)

如何在不发出其他查询的情况下计算结果中的所有项目?

我想以这种方式实现的是每页显示30个项目并知道将有多少页面.当然我可以运行SELECT COUNT(*)foo bar,但它看起来不对,对我来说是多余的.我正在寻找或多或少的一般,干,而不是太沉重的数据库方式这样做.

任何SQL或Perl hack或暗示我应该阅读的内容将不胜感激.

//我知道使用字符串连接查询是不好的

mu *_*ort 5

你必须以艰难的方式去做:一个查询来获取计数,另一个查询获得你想要的行集:

my $count = $database->prepare('SELECT COUNT(*) FROM content');
$count->execute();
my $n = $count->fetchall_arrayref()->[0][0];

my $content = $database->prepare('SELECT * FROM content LIMIT ?');
$content->execute($CONTNUM);
#...
Run Code Online (Sandbox Code Playgroud)