Scala 如何在Slick 2.0中计算(*)?
据报道,, 要获取表中的行数,请执行以下操作:Scala 如何在Slick 2.0中计算(*)?,scala,slick,slick-2.0,Scala,Slick,Slick 2.0,据报道,, 要获取表中的行数,请执行以下操作: val q1 = coffees.length // compiles to SQL (simplified): // select count(1) from "COFFEES" 但是,coffees.length的类型是Column[Int] 如何执行查询并获取值?尝试coffies.length.first应该执行并返回Int 抱歉,事实上,在slick 1.0中有第一种方法可以做到这一点,在slick 2.0中,他们放弃了它,转而使用
val q1 = coffees.length
// compiles to SQL (simplified):
// select count(1) from "COFFEES"
但是,coffees.length的类型是Column[Int]
如何执行查询并获取值?尝试coffies.length.first应该执行并返回Int
抱歉,事实上,在slick 1.0中有第一种方法可以做到这一点,在slick 2.0中,他们放弃了它,转而使用更通用的运行
执行查询的函数是
coffees.length.run
coffees.length.run
我只是在升级到slick 2.0时遇到了同样的问题。我忘了确切的方法在哪里,但泛型.run似乎对我有用,即
如果您的表名不是大写,则需要引号。我之前已经尝试过,但列[Int]没有第一个方法。由于某些原因,我无法使用此run方法。我的DB驱动程序是否缺少一个特性?。。。然而,我能够让它像这样运行:scala.slick.lifted.compiledcoffes.length.run。如果有人知道我遗漏了什么以阻止短版本工作,请告诉我!太神了谢谢大家!@ChrisW:你导入了你的简单驱动程序配置文件吗?@KrzysztofKowalski:我可以发誓我确实导入了我的驱动程序的简单模块中的所有符号,但无论如何,出于某种原因,较短的语法table.length.run现在起作用了。这起作用,但性能可能非常差。请参阅下面我对@tuxSlayer的评论。请注意,此查询可能比.length.run备选方案快一个数量级。我的测试数据库大约有180k行,在我的计算机上,第一种方法大约需要350ms,而StaticQuery方法大约需要30ms,这与我从mysql控制台得到的差不多。是的,我查询coffee.length.run的计划有点可怕。这么多嵌套查询:从select count1中选择x2.x3作为从select x4中选择x3。`updated_at`as x5,x4。`description`as x6,x4。`status`作为x7从`sales`x4 x19 x2中选择
StaticQuery.queryNA[Int]("select count(*) from \"" + TableName + "\"").first