【问题标题】:update table from a view present in ms sql database从 ms sql 数据库中存在的视图更新表
【发布时间】:2016-06-17 02:16:10
【问题描述】:

我是 sql 数据库的新手。如果我解释得不好,请原谅我。这里是。

我的数据库中有一个包含以下列和数据的视图

firstName, lastName, employee_id
Ria, Khanna, 15
Paul, Dcosta, 16
Raven, Sleeaz, 25

我想从此视图创建一个表并添加其他列。以下是数据的外观。

firstName, lastName, employee_id, location, roles
Ria, Khanna, 15,delhi,admin
Paul, Dcosta, 16, new york, developer
Raven, Sleeaz, 25, portland, HR

如您所见,它采用表中的视图和更新。我希望从视图中获取名字、姓氏和雇员 ID,我将自己更新位置和角色。

编辑

您能否还强调一下如何在不影响已创建的位置和角色值的情况下向表格添加视图。 @rgassvar 提供的答案将始终将空值放入位置和角色。并且以前添加的值将丢失。正确的?

【问题讨论】:

  • 您使用的是哪个 DBMS? mysql sql 服务器。
  • 不管你描述的数据库是什么都没有意义。视图只是一个存储的选择语句。您想要一个值表,这不会自动更新或其他东西。为什么不将这两个新列添加到您的视图中?
  • @SeanLange- 创建视图是因为这些列来自不同的数据库。我从那里得到 3 列并放置我自己的列。这将为我的项目创建一个我想要的表。
  • 视图不会创建表。这是一个视图。解决此问题的最佳方法是在视图中添加更多列。

标签: mysql sql-server database sql-view


【解决方案1】:

从视图中获取所有内容,然后将两列添加为空。

SELECT *, null as location, null as roles
INTO new_table
FROM the_view

然后只需根据您认为合适的方式更新每个角色的位置和角色字段。

编辑: 初始创建后,您可以执行以下操作:

INSERT INTO new_table
SELECT *, null as location, null as roles
FROM the_view

INSERT INTO new_table (firstName, lastName, employee_id)
SELECT *
FROM the_view

【讨论】:

  • 谢谢@rgvassar。这将适用于第一个表创建。正确的 ?假设,我更新表并再次想将视图列添加到表中,而不影响我输入的位置和角色值。
  • 您能否还强调一下如何在不影响已创建的位置和角色值的情况下向表格添加视图。以上将继续将空值放入位置和角色。并且以前添加的值将丢失。对吗?
  • 如果已经有一个表,第一个示例将失败。我添加两个示例的编辑只会添加新行。当然,这两个新字段必须可以为空,如果它们不存在,则必须使用 ALTER TABLE 语句添加。
  • 感谢 rgvassar。我会试试这些。一旦我得到 15 分,我将投票给答案。谢谢
  • 我认为你不需要 15 分。只需检查绿色复选标记。不过,请确保此答案首先适合您。
猜你喜欢
  • 2013-04-15
  • 2018-07-26
  • 2014-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2018-02-11
相关资源
最近更新 更多