我在 Windows 10 上使用 postgresql 11.1-1。在我的系统上,如果我运行如下查询,我将为每个随机列获得不同的数字:
postgres=# SELECT random() as sortOrder, random() as col2;
sortorder | col2
-------------------+-------------------
0.607938482426107 | 0.121234225574881
(1 row)
但是如果我添加一个 ORDER BY 子句,如下所示,那么 random 每次为每一行返回相同的随机数。
postgres=# SELECT random() as sortOrder, random() as col2
FROM generate_series(0,1)
ORDER BY sortOrder;
sortorder | col2
-------------------+-------------------
0.100375576410443 | 0.100375576410443
0.170669795479625 | 0.170669795479625
(2 rows)
我假设这是有技术原因的,但是在最后一个查询中是否有可能为每列获取不同的随机值?
编辑: 我最初的问题可能过于简单化了。我尝试的实际查询更像是以下内容:
SELECT column1, random(), column2, random()
FROM table1
ORDER BY random();
因此,拥有可以与表查询结合的答案也很重要。