拓扑基础字段仍为x
,y
,z
,gradient
,tmestamp
,user
现在我遇到了用数据填充我的基础的问题。我有几个具有相同特征的补丁,但位置不同。
我通过准备一个插入语句和两个嵌套循环来解决它,这些循环改变了x
,y
(z
在填充策略时被修复(至少在目前)。
程序化方法很慢,非常慢,所以我尝试在SQL中播放它并且我做得那么远:
insert into topo12 ("x","y","z","gradient","user","refresh")
select generate_series(2,4),generate_series(2,4),1024,12222563,'toto',1234567878;
但这并没有给出(逻辑上我知道但是......)一个矩阵,而是一个向量 到目前为止,我正在努力让进一步的子请求工作,所以任何暗示都赞赏。
答案 0 :(得分:3)
我认为您想要的是一个连接,因此您可以生成两个系列的笛卡尔积:
> SELECT x, y FROM generate_series(1,2) AS x, generate_series(1,2) AS y;
x | y
---+---
1 | 1
1 | 2
2 | 1
2 | 2
(4 rows)
您当前正在从两个设置返回功能中进行选择。我不明白它的语义应该是什么,但它并不像你想要的那样产生笛卡尔值的产品:
> SELECT generate_series(1,2), generate_series(1,2);
generate_series | generate_series
-----------------+-----------------
1 | 1
2 | 2
(2 rows)
> SELECT generate_series(1,2), generate_series(1,3);
generate_series | generate_series
-----------------+-----------------
1 | 1
2 | 2
1 | 3
2 | 1
1 | 2
2 | 3
(6 rows)
答案 1 :(得分:1)
insert into topo12 ("x","y","z","gradient","user","refresh")
select
(random() * 2)::int + 2,
(random() * 2)::int + 2
,1024,12222563,'toto',1234567878
from generate_series(1, 10)