【问题标题】:How to use ScalaQuery to build a query for count(*) sql?如何使用 ScalaQuery 为 count(*) sql 构建查询?
【发布时间】:2010-09-25 03:18:03
【问题描述】:

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

我用了一个

查询(TestTable.count)

但是生成的select语句是:

从 (select column1) 中选择 count(*) 来自TestTable t2) t1

我想要:

从TestTable中选择count(*)

对不起我的英语不好。


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
}

【问题讨论】:

  • 你能把剩下的代码贴出来吗?
  • Stefan 说它看起来像一个错误。
  • 更新添加其余代码
  • 嗨,丹尼尔。感谢您帮助我询问 Stefan。

标签: sql scala scalaquery


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答和您的项目,szeiger。有了你的回答,我也学会了如何使用 ColumnOps 对象,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
  • 1970-01-01
  • 2022-09-18
  • 1970-01-01
  • 2020-04-21
相关资源
最近更新 更多