如何在SQLite中将多个COUNT合并为一个大查询?

时间:2018-08-10 12:12:27

标签: sql sqlite count

我正在使用SQLite并使用像这样的循环执行许多COUNT查询...

foreach (var eventId in eventIds)
{
    Database.Query("SELECT COUNT(RowId) FROM Images WHERE EventId = " + eventId);
}

...每个查询仅花费12毫秒左右的时间,但这加起来会导致10秒钟的等待。是否可以将其合并为一个查询和一组事件ID?

就像...

SELECT COUNT(RowId) FROM Images WHERE EventId IN (10329, 10312, 10328, etc...)

...但是很明显有个人COUNT回来了吗?

2 个答案:

答案 0 :(得分:4)

使用GROUP BY获取相对于事件的计数。

SELECT eventid,
       count(*)
       FROM images
       WHERE eventid IN (4711,
                         747,
                         ...)
       GROUP BY eventid;

这将返回类似:

eventid | count
========+======
   4711 |    31
    747 |    99
       ...

答案 1 :(得分:3)

尝试一下:这将为您提供每个事件的计数

SELECT EventId ,COUNT(RowId) FROM Images WHERE EventId IN (10329, 10312, 10328, etc...)
group by EventId