【发布时间】:2021-12-23 08:25:57
【问题描述】:
我有两个表,test1 和 test2:
test1
| id | name |
| -- | ----- |
| 1 | Steve |
| 2 | Phil |
| 3 | Tony |
test2
| id | name |
| -- | ----- |
| 4 | Peter |
| 5 | Perry |
我使用代码从 test1 创建了一个视图CREATE VIEW test_view AS SELECT * from test1;
我希望用来自 test2 的数据更新这个 test_view。
我想要的如下图
| id | name |
| -- | ----- |
| 1 | Steve |
| 2 | Phil |
| 3 | Tony |
| 4 | Peter |
| 5 | Perry |
我希望找到一种方法来做到这一点,而无需加入这两个表。
【问题讨论】:
-
您要使用
UNION操作/关键字吗? -
不,不会。我正在寻找一种方法,首先从表 test1 创建 test_view,然后使用表 test2 中的数据更新 test_view。
-
更新视图就是销毁和重新创建它,不是吗?
-
您可能误解了什么是视图。视图只是查询的结果。当您更改基础数据(例如表 test1)时,视图的“内容”会发生变化 - 如果您不更改基础数据(或视图代码,请参阅Ярослав Рахматулин's answer),它不会改变。具体来说,视图不是在您创建视图时数据的副本,或者是保存数据的变量(您可以向其中添加更多数据)或其他东西。实际上,当你这样做时,例如
select * from viewname,MySQL 基本上会在你运行 select 时将 viewname 替换为视图的代码。 -
你是对的。我不明白视图到底是什么。事实上,更新基础数据足以满足我的需求。谢谢你,我为误解道歉