有人回答了我关于使用现有表生成具有随机值的表的问题(仍在努力解决)。答案是这样的:
select uuid_generate_v4(), a."Account", tns."Name", tvs."Value"
from generate_series(1, 10) x(rn)
left join (
select "Account", row_number() over(order by random()) rn from "AccountSamples"
) a on a.rn = x.rn
Run Code Online (Sandbox Code Playgroud)
我不明白 x(rn) 部分,它似乎是一个别名,但我不明白为什么它在括号内有一个“rn”,并且括号本身对我来说是新的,是 rn 另一个别名还是一个特殊的关键字?
这是列别名。我认为解释这一点的最简单方法是使用两个查询:
select *
from generate_series(1, 10) x(rn);
select *
from generate_series(1, 10) x(foo);
Run Code Online (Sandbox Code Playgroud)
两者都会生成一个带有别名的表x
,但第一个表将有一个名为 的列rn
,而第二个表中的列将被命名为foo
。请参阅这个数据库小提琴。
您可以删除该列(rn)
,但随后需要引用该列,因为x.x
这可能会令人困惑。
归档时间: |
|
查看次数: |
442 次 |
最近记录: |