POSTGRESQL random()始终为整个表提供相同的值。如何解决?

DIB*_*its 2 random postgresql function

我想构建一个生成2列表的sql,其中第一个是一系列时间戳,第二个是提供值的functon。例如这里是random()。但是随机函数在整个表中始终为我提供相同的值,我希望有所不同。如何解决?

SELECT * FROM generate_series('2008-03-01 00:00'::timestamp,
                              '2008-03-05 12:00',
                              '1 day') as ts, random() as value;
Run Code Online (Sandbox Code Playgroud)

生成表:

"2008-03-01 00:00:00";0.816707271616906
"2008-03-02 00:00:00";0.816707271616906
"2008-03-03 00:00:00";0.816707271616906
"2008-03-04 00:00:00";0.816707271616906
"2008-03-05 00:00:00";0.816707271616906
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

random()呼叫移至选择列表:

SELECT ts.*, random() as value
FROM generate_series('2008-03-01 00:00'::timestamp,
                     '2008-03-05 12:00',
                     '1 day') as ts;
Run Code Online (Sandbox Code Playgroud)

通过将其放入FROM子句中,它只会被评估一次。