如何计算用油滑的过滤结果?(How to count results with a filter u

2019-08-01 10:12发布

我面对的一个问题,我想简化:(很肯定,我这样做是错误的事实)。

通缉

我想指望有一个ID的用户数量= 1。在SQL语言,让我们说这个问题是这样的:

SELECT COUNT(*) FROM users WHERE id = 1

我使用的是油滑的“解禁”的形式,所以这里是我的一段代码计数的用户:

Query(Users.where( _.id === 1).length).first

其实这里所发生的是,油滑的别名ScalaQuery,实际上是创造与过滤原因的子查询,然后计算该子请求的结果。

SELECT COUNT(*) FROM (SELECT * FROM users WHERE id = 1))

好像相当大的开销,这样的查询。

Answer 1:

不知道这是否已经从ScalaQuery改为圆滑,但尝试:

val q = for{ 
  id <- Parameters[Int]
  t <- tableObject if t.id is id
} yield t.id.count

val cnt = q(someID).firstOption getOrElse 0


文章来源: How to count results with a filter using Slick?