sql - 如何让我的 UPDATE 语句在 ctree 上运行?
问题描述
所以我正在编写一个基于特定条件插入和更新的脚本。我已经完成了插入语句,但很难让我的 UPDATE 语句在 CTREEACE DATABASE 脚本部分中工作。如果有任何熟悉 ctree 的人可以提供帮助,请看一下我的语法是否有问题。
UPDATE act
SET tbl71.address = act.address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
act view
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)
city(varcahr)
zipcode(varchar)
dates(varchar)
tbl71 view
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)
city(varcahr)
zipcode(varchar)
dates(varchar)
如果根据 tbl71 的 act 视图中的日期存在地址,则从 tbl71 更新 act 中的所有列
解决方案
在开始时检查以下 8 条规则:
- 视图是基于一个且只有一个表定义的
- 视图必须包含创建视图所基于的表的 PRIMARY KEY
- 视图不应包含由聚合函数组成的任何字段
- 视图的定义中不能有任何 DISTINCT 子句
- 视图的定义中不能有任何 GROUP BY 或 HAVING 子句
- 视图的定义中不能有任何 SUBQUERIES
- 如果您要更新的视图基于另一个视图,则后者应该是可更新的。(视图的)任何选定的输出字段都不得使用常量、字符串或值表达式
下一个问题是你为什么要尝试使用from (act) 从另一个视图(tbl71)更新列,但这取决于你。
如果这个例子不起作用,没关系:
UPDATE act
SET act.address = tbl71 .address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
尝试查看这个简单查询的结果以查看联合或连接是否有效:
SELECT *
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
在此之后尝试添加 *“Where”:
SELECT *
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
最后尝试进入更新。最简单的方法是重新创建视图(制作 1 个视图而不是 2 个,这将获得您需要的最终数据。)
推荐阅读
- python - tf.nn.dynamic_rnn()“输出”与“状态”的概念理解
- javascript - 角度测试用例未能返回选定的标识符
- c# - c#中的扩展方法如何为父变量赋值,即“this”变量
- android - Android OnSharedPreferenceChangeListener 调用了 SwitchPreferenceCompat 的错误首选项值
- chilkat - Chilkat:使用来自 Microsoft 软件密钥存储提供商 (CNG) 的证书签署电子邮件
- oracle - 如何在 apex_item.date_popup 中填充 sysdate
- apache-spark - 想要通过 scala 将源(配置单元)数据插入目标,这里源列小于目标列
- java - 从 Java 应用程序访问 FUT Web 应用程序
- python-3.x - AWS Lambda SES 发送带有附件 PYTHON 的电子邮件
- scala - 如何在 scala 版本 2.13 中修复 Anorm 的未解决依赖项