在 PostgreSQL 中选择随机行的一种可能方法是:
\n\nselect * from table order by random() limit 1000;
(另请参阅此处。)
\n\n我的问题是,order by random()
到底是什么意思?是否以某种方式生成了一个随机数并将其视为某种“种子”?或者这是特殊的内置语法,在这个地方random()
具有与其他上下文不同的含义?
从一些实验来看,最后一种解释似乎更合理。考虑以下:
\n\n# select random();\n random \n\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\n 0.336829286068678\n(1 row)\n
Run Code Online (Sandbox Code Playgroud)\n\n# select * from article order by 0.336829286068678 limit 5;\nERROR: non-integer constant in ORDER BY\nLINE 1: select * from article order by 0.336829286068678 limit 5;\n
Run Code Online (Sandbox Code Playgroud)\n