Scala Slick groupBy没有聚合

时间:2016-04-09 17:44:28

标签: scala group-by slick slick-3.0

我正在尝试执行一个基本查询,从一个表中生成3列,按cityName(类型为字符串)分组,但是我无法找到正确的方法来处理映射。文档建议必须映射从groupBy返回的结果,无论它是否需要聚合。在这种情况下,它按字符串值进行分组,因此在SQL中编写它时,它将非常简单:

SELECT cityCode, cityName, countryName FROM airport GROUP BY cityCode

我到目前为止的是以下查询,它返回Future[Seq[(String, String, String)]]

val q = for {
   a <- slickAirports
} yield (a.cityCode, a.cityName, a.cityName)
db.run(q.result)

我尝试按cityCode按照此处的示例进行分组:http://slick.typesafe.com/doc/3.0.3/sql-to-slick.html#group-by

val q2 = q.groupBy(a => a._1).map{ 
   case (cityCode, group) => (cityCode, group.map(_._1))
}
db.run(q2.result)

导致以下错误:

type mismatch;
 found   : AirportDAOImpl.this.driver.StreamingDriverAction[Seq[(String, Option[String])],(String, Option[String]),slick.dbio.Effect.Read]
    (which expands to)  slick.profile.FixedSqlStreamingAction[Seq[(String, Option[String])],(String, Option[String]),slick.dbio.Effect.Read]
 required: slick.dbio.DBIOAction[Seq[(String, String, String)],slick.dbio.NoStream,Nothing]

我能看到的唯一不同的是我在.avg上不包括group.map(_._1),但是因为这是一个字符串列,我试图分组,肯定不会需要这个。任何关于简单的groupBy字符串列的正确方法的见解将不胜感激。

0 个答案:

没有答案
相关问题