是否可以在没有Vertica连接的情况下从另一个表更新一个表?

时间:2017-09-13 17:48:14

标签: sql database sql-update vertica

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

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

以下代码可用于Teradata,但Vertica是否具有这种灵活性?

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

2 个答案:

答案 0 :(得分:2)

Teradata SQL语法不能与Vertica一起使用,但以下查询应该做同样的事情:

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

答案 1 :(得分:0)

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

另一种方法是首先将目标表中的数据暂时移动到另一个中间(但不是临时)表。之后使用另一个表编写连接查询以生成所需的结果,最后使用export table与该连接查询。最后放下中间表。当然,这是假设您已经以适合您的更新逻辑的方式对表进行了分区。