【发布时间】:2021-11-16 20:52:50
【问题描述】:
我想获取所选行数以及所选数据。目前我要使用两条sql语句:
一个是
select * from XXX where XXX;
另一个是
select count(*) from XXX where XXX;
单条sql字符串可以实现吗?
我查看了sqlite3的源码,发现sqlite3_changes()的功能。但该功能仅在数据库更改时(insert, delete or update 之后)才有用。
谁能帮我解决这个问题?非常感谢!
【问题讨论】:
-
虽然答案是肯定的,但下面的大多数答案都会增加您应该避免的复杂性。运行两个查询没有任何问题。如果您在查询后处理数据,您还可以使用生成的集合对象的
count()或size()方法,具体取决于您使用的语言。 -
我进行查询,然后将每一行转换为 C++ 对象并将行添加到 C++ std::vector。显然,我想尽可能高效地做到这一点。如果您首先为正确数量的项目保留空间,则将项目添加到 std::vector 会明显更快。因此,首先进行查询以获取计数是没有意义的,因为它比我从知道计数中节省下来的效率更高,并且在最后查询我的 std::vector 也是毫无意义的,因为这为时已晚。