如何使用ScalaQuery只选择一个符合where子句的第一个或最后一个
发布时间:2020-12-16 18:11:24 所属栏目:安全 来源:网络整理
导读:使用以下查询模板选择全部: val q = for { a - Parameters[Int] b - Parameters[Int] t - T if t.a == a t.b == b _ - Query.orderBy(t.c,t.d)} yield t 我需要修改它以选择第一个(c的最小c和d最小)或最后一个(c的最大c和d最大值)记录匹配where条件的记录.
使用以下查询模板选择全部:
val q = for { a <- Parameters[Int] b <- Parameters[Int] t <- T if t.a == a && t.b == b _ <- Query.orderBy(t.c,t.d) } yield t 我需要修改它以选择第一个(c的最小c和d最小)或最后一个(c的最大c和d最大值)记录匹配where条件的记录.我通常强烈不会选择其他(最后/第一个)记录,因为有数十万个记录…… 解决方法
OP的查询目前是如何构建的,这里存在潜在的危险.按原样运行,获取100K结果集的第一个或最后一个结果并不是非常有效(不太可能,是的,但重点是,查询对返回的行数没有限制)
使用直接SQL,你永远不会做这样的事情;相反,你会在限制1上 在ScalaQuery中,LIMIT = take(n),因此添加take(1)以获取从查询本身返回的单个记录 val q = (for { a <- Parameters[Int] b <- Parameters[Int] t <- T if t.a == a && t.b == b _ <- Query.orderBy(t.c,t.d) } yield t) take(1) q.firstOption (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |