我有一个名为date_created
的列,我希望每一行都保留一个随机日期,其日期边距为当前时间的-2天。
我正在运行以下查询,但它会使用相同的随机日期更新所有行。我希望每一行都是随机的,而不是一样的。
update table set date_created=(select NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days')
任何想法都会受到赞赏。
答案 0 :(得分:2)
使用表达式代替查询:
update my_table
set date_created= NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days'
答案 1 :(得分:2)
PostgreSQL正在优化您的子查询,以便它只运行一次,从而导致所有行都使用相同的随机值。要确保每行运行一次random()
,请使用表达式而不是子查询。此外,您的计算可以简化一点。
建议改进查询:
UPDATE my_table SET date_created = now() - random() * INTERVAL '2 days'