【问题标题】:Simple select with max using scalike jdbc使用 scalike jdbc 进行带最大值的简单选择
【发布时间】:2018-01-27 22:17:19
【问题描述】:

仍在尝试熟悉 scalikejdbc。使用 sql 语法将使用 scalike jdbc 的查询发送到表中以获取最大日期的最简单方法是什么?像下面这样非常简单的东西可以正常工作,但是当我尝试在列周围添加 max 时给我一个错误。

  val maxDate: Option[String] = DB readOnly { implicit session =>
    sql"select <column> from <table>"
      .map(rs => rs.string("<column")).first.apply()
  }

这不起作用:

val maxDate: Option[String] = DB readOnly { implicit session =>
    sql"select max(<column>) from <table>"
      .map(rs => rs.string("<column")).first.apply()
  }

错误: 检索值失败,因为找不到列名。如果您使用的是 SQLInterpolation,...

【问题讨论】:

  • max(...) 这样的表达式要么没有列名或别名,要么从表达式本身派生出来,你假设它会以某种方式继承表达式中使用的列的名称,是 - 至少对于我所知道的大多数 DBMS - 是错误的。

标签: sql scala jdbc scalikejdbc


【解决方案1】:

我预计会发生这种情况,因为默认情况下,max(MyColumn) 列没有名称“MyColumn”。你可以试试这样的方法

  val maxDate: Option[String] = DB readOnly { implicit session =>
    sql"select max(MyColumn) as MyColumn_max from MyTable"
      .map(rs => rs.string("MyColumn_max")).first.apply()
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多