是否可以在不加入 Vertica 的情况下从另一个 table 更新一个 table?

Is it possible to update one table from another table without a join in Vertica?

我有两个 tables A(i,j,k) 和 B(m,n)。

我想通过从 table A 中获取 sum(j) 来更新 B table 的 'm' 列。是否可以在 Vertica 中执行此操作?

下面的代码可以用于Teradata,但是Vertica有这种灵活性吗?

Update B from (select sum(j) as m from A)a1 set m=a1.m;

Teradata SQL 语法不适用于 Vertica,但以下查询应该做同样的事情:

update B set m = (select sum(j) from A)

根据您 table 的大小,这可能不是更新数据的有效方法。 Vertical 是 WORM(一次写入多次读取)存储,未针对更新或删除进行优化。

另一种方法是先将目标 table 中的数据临时移动到另一个中间(但不是临时)table。之后使用另一个 table 编写连接查询以产生所需的结果,最后使用 export table 与该连接查询。最后丢掉中间的table。当然,这是假设您已经按照 suitable 的方式为您的更新逻辑划分了 table。