sql - SQL用另一个表的列中的值替换视图列中的所有行值
问题描述
我是 SQL 新手,所以这可能是一个简单的问题,但我自己找不到解决方案。我需要用表 ( ) 中列中的值替换或更新Startdate
视图 ( view1
)新列中的所有值。中的值始终相同(它是一个日期,例如 01.01.2001 00:00:00)。Startdate
table1
table1
到目前为止,我所做的是在以下位置创建一个具有正确格式的空列view1
:
CREATE VIEW view1
AS SELECT [fields],
[other fields],
cast(NULL as datetime2(7)) AS [Startdate]
FROM ...
现在我尝试通过以下方式更新该列:
UPDATE [dbo].[view1]
SET [dbo].[view1].[Startdate] = [EGDB].[dbo].[table1].[Startdate]
但我收到错误“更新或插入视图或函数‘view1’失败,因为它包含派生或常量字段。”
我的错在哪里?
解决方案
根据评论和“中的值table1
始终相同”的问题,您可以使用
CROSS JOIN (SELECT TOP (1) [Startdate] FROM [EGDB].[dbo].[table1]) as startdate
,
并使用startdate.[Startdate]
代替cast(NULL as datetime2(7)) AS [Startdate]
。
但是,我认为奇怪的是所有行都具有相同的值-如果不是这种情况或将来不会,您可以分别更改TOP (1)
为MIN
或MAX
获取最早/最晚的开始日期。
推荐阅读
- node.js - navigator.getUserMedia 不是使用 WebRTC 的函数
- python-3.x - 如何从 txt 中提取某些单词到 Python 变量中?
- powershell - Powershell TCP 端口扫描器
- html - 如何将图像的位置向左移动?
- linux-kernel - 使用 QEMU 和 GDB 调试 xv6 时无法访问内核空间
- java - 使用 Java API 验证 BCP-47 语言标签
- java - JavaFX 场景总是空的;展示空舞台
- python - 如何让图像在八个不同方向上移动?
- flutter-web - Flutter Web:需要带有子菜单的菜单
- typescript - TypeScript 需要两个参数或都不需要