微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Exposed 中按查询为组中的几列设置别名计数

如何解决在 Exposed 中按查询为组中的几列设置别名计数

我正在尝试创建一个类似于 ORM Exposed 中显示查询

select t.a,t.b,count(*)
from table as t
group by t.a,t.b;

但似乎 .count() 只支持一列的别名,但这里我需要两列:

val count = Table.Table.<somehow I need to push both fields a and b here>.count()

Table.Table
  .slice(Table.Table.a,Table.Table.b,count)
  .selectAll()
  .groupBy(Table.Table.a,Table.Table.b)
  .map { row ->
   Result(
     state = row[Table.Table.a],trigger = row[Table.Table.b],count = row[count]
   )
  }

你对如何去做有什么想法吗?

解决方法

val count = Count(stringLiteral("*"))

这将在您的查询中生成 COUNT('*')(这是一个有效的 SQL 表达式,给出与 COUNT(*) 相同的结果)。

如果你想摆脱这些烦人的报价,你可以这样做:

val asterisk = object : Expression<String>() {
    override fun toQueryBuilder(queryBuilder: QueryBuilder) {
        queryBuilder { +"*" }
    }
}
val count = Count(asterisk)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。