sql - 如何使用 ScalaQuery 构建 count(*) sql 查询?

标签 sql scala scalaquery

当我使用 ScalaQuery 进行编程时,如何构建“select count(*) from table”语句?

我用了

Query(TestTable.count)

但是生成的select语句是:

select count(*) from (select column1 from TestTable t2) t1

我想要:

select count(*) from TestTable

抱歉我的英语不好。


import org.scalaquery.ql.extended.MySQLDriver.Implicit._
import org.scalaquery.session._
import org.scalaquery.session.Database.threadLocalSession
import org.scalaquery.ql.Query
import org.scalaquery.ql.basic.{BasicTable => Table}

object Test {
  val db = Database.forURL(...)
  db withSession {
    val q = Query(TestTable.count)
    println(q.selectStatement)
  }
}
object TestTable extends Table[(Long, Int)]("test") {
  def id = column[Long]("id")
  def config = column[Int]("config")
  def * = id ~ config
}

最佳答案

我不应该这么快就称它为错误。生成的代码是正确的,但显然不理想。从 ScalaQuery 0.9.0 开始,您只能通过手动将 CountAll 运算符插入查询 AST 来获取所需的语句:

TestTable.map(t => ColumnOps.CountAll(t))

我刚刚进行了一项更改来改善这种情况,以便在许多情况下避免不必要的子查询。在 ScalaQuery 0.9.1 中,您最初的尝试“Query(TestTable.count)”应该按预期工作。

关于sql - 如何使用 ScalaQuery 构建 count(*) sql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792347/

相关文章:

scala - 如何获取刚刚由 ScalaQuery 插入的自增 ID

scala - 如何在 ScalaQuery 中获取类对象作为结果而不是元组?

mysql - 使用@rownum :=@rownum+1 AS rownum 枚举 SQL 中的每条记录

php - laravel sql 查询中的语法错误

java - scala play 1.2.4 与 postgres 兼容吗?

scala不喜欢akka中的自变量?

sql - 表与 View 的性能

mysql - SQL 查询有效但数据损坏?

java - Java 8 Stream.parallel 和 Scala 特征 Parallelized.par 有什么区别

scala - 如何从运行时参数指定 SLICK Query sortBy 列?