Slick Plain SQL查询获取计数

时间:2014-06-24 18:42:51

标签: sql scala slick

在Slick中使用纯SQL查询我想进行查询并获取行数,我不关心数据。

我应该使用updateNA吗?在StaticQuery上调用execute不会返回任何内容。如何获取行数?

2 个答案:

答案 0 :(得分:0)

您需要拨打.first.executehttp://slick.typesafe.com/doc/2.0.2/api/index.html#scala.slick.jdbc.StaticQuery0

如果你有一个正常的选择(而不是删除或更新),你需要像Dan建议的那样询问行数。

答案 1 :(得分:-1)

最简单的方法是修改您正在执行的SQL查询以返回行计数,方法是用SELECT COUNT(*) FROM (...)包围它。如果您要使用原始SQL字符串,这是最简单的,但如果您有StaticQuery对象,也可以这样做:

def getRowCount[P](q: StaticQuery[P, _], params: P = ())
               (implicit pconv: SetParameter[P], rconv: GetResult[Int]): Int = {
  val q2 = StaticQuery.query[P, Int](
    "SELECT COUNT(*) FROM (" + q(params).getStatement + ")")
  q2(params).first
}