如何在 PL/SQL 中连接两个表而不创建新表
Posted
技术标签:
【中文标题】如何在 PL/SQL 中连接两个表而不创建新表【英文标题】:How to join two tables in PL/SQL without creating a new one 【发布时间】:2019-10-11 11:37:20 【问题描述】:我正在尝试在 PL/SQL 中加入两个表,但我不想创建另一个表。我想使用“ALTER TABLE”。
我想改变我的旧表并从另一个表中添加一列。我尝试使用 alter table 并创建新列,这是第二个表中的列。
ALTER TABLE TAB1
ADD VAR1 VARCHAR(30);
UPDATE TAB1 A
SET A.VAR1 = B.VAR1
WHERE EXISTS (SELECT VAR1 FROM TAB2 B WHERE A.ID = B.ID)
错误信息在“B.VAR1”中。
【问题讨论】:
那些被称为列,而不是“变量” 为什么要将相同的数据存储在两个单独的表中两次? 【参考方案1】:update tab1 a set
a.var1 = (select b.var1
from tab2 b
where b.id = a.id
)
where exists (select null
from tab2 b
where b.id = a.id
);
或者:
merge into tab1 a
using (select b.id, b.var1
from tab2 b
) x
on (x.id = a.id)
when matched then update set
a.var1 = x.var1;
【讨论】:
一个问题刚刚在我脑海中闪过,如果我们谈论性能角度,UPDATE 或 MERGE 哪个会更快(忽略受影响的行数场景)? 我没有任何文档参考,但是 - 根据我自己的经验,MERGE 有时比 UPDATE 运行得更快,@Ankit。为了查明真相,应该比较解释计划。以上是关于如何在 PL/SQL 中连接两个表而不创建新表的主要内容,如果未能解决你的问题,请参考以下文章
向模型 (edmx) 添加新表而不更新 Database First Entity Framework MVC 应用程序中的其他模型