После поиска я обнаружил эту проблему на GitHub.wrapAsExpression
можно использовать для создания подзапроса.
Копировать EqOp
и преобразовать его в InOp
class InOp(expr1: Expression<*>, expr2: Expression<*>) : ComparisonOp(expr1, expr2, "IN")
Копировать eq
затем преобразуйте его в inExpr
функцию расширения
infix fun<T, S1: T?, S2: T?> Expression<in S1>.inExpr(other: Expression<in S2>) :
Op<Boolean> = InOp(this, other)
Используйте их
Table.run {
select { id inExpr wrapAsExpression(slice(id.max()).selectAll().groupBy(column)) }
}
Пример вывода:
SELECT `user`.id, `user`.name, FROM `user` WHERE `user`.id IN (SELECT MAX(`user`.id) FROM `user` GROUP BY `user`.name)