使用 slick 3.0 和 postgresql 获取 6 条随机记录

Sot*_*rge 2 random postgresql scala slick

我需要一些帮助来编写正确的光滑 (3.0) 语法以从表中获取 6 个随机行。

我想转换:

select * from [table]
order by random()
limit 6
Run Code Online (Sandbox Code Playgroud)

变成光滑的代码。

我找到了这个页面http://slick.typesafe.com/doc/3.0.0/sql-to-slick.html#index-11。但作为 scala 和 slick 的新手,我无法独自做到这一点。

Igo*_*iev 5

尝试

val rand = SimpleFunction.nullary[Double]("random")
db.run(Tables.sortBy(x=>rand).take(6).result)
Run Code Online (Sandbox Code Playgroud)

这会生成下一个 sql:

select x2."field1", x2."field2" from 
(select x3."field1" as "field1", x3."field1" as "field2" from "Table" x3 order by random() limit 6) x2
Run Code Online (Sandbox Code Playgroud)

而slick为什么会生成子查询,你可以在这里找到/sf/answers/1013834041/