问题标签 [merge-statement]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3983 浏览

sql-server-2008-r2 - 在合并语句中将 Null 与 Null 进行比较

在处理数十亿条记录以比较合并语句中的 NULL 时,哪种语句是完美的或更好的。我尝试过使用 SET ANSI_NULLS OFF 但这在合并语句中不起作用。这是我的两种方式

或者

请让我知道是否有更好的方法来处理它。因为我有大约 15 列要比较。

0 投票
1 回答
177 浏览

sql - 合并语句产生异常,但是为什么

此合并语句引发 ORA-00905:missing keyword 异常。可能是什么问题?WHEN MATCHED 分支的东西?

0 投票
2 回答
10707 浏览

sql - 合并 SQL 多个插入语句不是一个选项

所以,继续另一个问题......

我已经合并,哪个任务是从只能表示实体之间的 1-1 连接(PROJECT)的现有表和可以表示 N-1 连接(工作者)的表创建联结表行,联结表是(PROJECT-工人),每个项目都应该有一个专门的领导,每个工人都应该有一个项目,但现在我应该有一个 nn 连接......这个合并可以完成这项工作:

但不幸的是,multiple matched then insert分支不是 sql 中的“功能”,我该如何解决这个问题。原始查询---)

0 投票
1 回答
4994 浏览

sql-server-2008-r2 - 合并语句中的性能问题

我有一个如下的合并语句

对于第一组记录(大约 300,000 条记录),它运行良好,只需 30 秒即可执行。但是对于第二组记录(大约 300,000 条),它需要一个多小时。

两天前,我已经加载了 50 个这样的集合,并且相同的查询运行得非常快,但从今天开始它非常慢。我不知道出了什么问题。

注:查询

从 TABLEA 中选择 WITH(NOLOCK) INNER JOIN TableB .....

在所有场景中需要 20 秒。

0 投票
1 回答
2735 浏览

sql - SQL Server:合并语句的更新部分不起作用

我想我已经看这个声明太久了。谁能告诉我为什么这个声明的更新部分没有更新?我认为通过在列上进行测试or!=这应该只在需要时调用更新的原因——相反,我似乎无意中创建了一个条件......永远不需要更新!

在查看语句之前,需要了解以下 4 件事:
1. 临时表#Facilities 中的数据填充了来自多个来源的最新数据。此数据包含机器人新(插入)和更改(更新)数据。
2. 在执行 Merge 语句之前,#Facilities 的内容已被验证包含数据。
3. 合并语句的插入部分成功。
4. 虽然语句的更新部分不会更新更改的数据,但语句不会失败。

0 投票
0 回答
108 浏览

tsql - Sql Server - 合并语句

以下存储过程执行不佳。我想将其更改为合并声明。我该怎么做?我以前没有使用过 Merge 语句。请帮忙

0 投票
1 回答
623 浏览

sql - 使用静态/常量 ON 子句时出现奇怪的 MERGE 行为

test我想将其他表中的一些值插入表中,并记录错误。我还想记录无法插入到 err_test 表中的记录的 ID。在伪代码中,这将导致如下所示:

以上显然是行不通的,因为src.id是未知的。但是我可以使用充当插入语句的合并语句来执行上述插入:

执行上述后,错误并没有记录到err_table中,而是抛给了用户:

字符串太长?然后我尝试不使用 err_mesg$ 中的连接:

奥赫:

它变得更好:

现在我被踢了:

这里发生了什么?似乎1 = 2是罪魁祸首,因为

正常工作,并且 (!!) 将错误记录在err_table

现在它可以正常工作了。

有人可以向我解释这里发生了什么和/或还提供一种更好的方法来解决上述问题,即必须在ORA_ERR_MESG$字段中记录来自源表的额外信息。

注意:根据我可以使用的文档1 = 2要将所有源行插入表中,您可以在 ON 子句条件中使用常量过滤谓词。一个常量过滤谓词的例子是 ON (0=1)。

0 投票
1 回答
19106 浏览

sql - 如何为删除的 SQL Server 合并语句添加 where 条件

如果它们已从源中删除,我正在使用上面的 Merge 语句删除 DestinationTable 中的记录

有谁知道如何在 Delete 语句中添加 WHERE 条件?我只想从 ColA 等于特定常量字符串的目标中删除。

0 投票
1 回答
3268 浏览

sql - Oracle Merge:当不匹配时删除并插入

我有一个简单的查询,但只有一部分让我感到困惑:

我有以下算法:

你能帮我删除和插入或告诉我一个方法吗?

0 投票
2 回答
5767 浏览

sql - 每行或每条语句的 MERGE 语句唯一索引/约束验证?

假设我有下表具有以下约束:

现在假设我执行以下操作MERGE

以上MERGE 失败吗?如果UPDATE先s,后INSERTs,则索引/约束在执行过程中不会失效。但是如果先INSERTs,再UPDATEs,索引会暂时失效,语句可能会失败?

有人可以详细解释(或指出正确的方向)Oracle RDBMS 如何处理此类问题吗?此外,使用该LOG ERRORS INTO子句时的处理方式是否相同?

我问这个问题以及为什么我需要一个解决方案的主要原因:我的 MERGE 语句运行了几个小时,并带有 LOG ERRORS INTO 子句。错误日志似乎作为一个自主事务工作。在语句完成更新插入之前很久就记录了一些唯一约束错误(基于唯一索引)(其中,我看到序列上升),我不知道为什么(尽管最后,在更新插入之后,应该没有唯一约束无效)。当我查看 ERROR 表时,我看到 ORA-00001:INSERT 操作违反了唯一约束 (XXX.YYY)。我可以将此记录从 ERROR 表插入到主表中,而不会导致唯一约束失败。所以我想知道为什么首先记录错误。

编辑:下面的答案断言,当执行语句时,约束在语句末尾强制执行。我理解并同意(同时我想了解更多关于此类情况下的索引维护的详细信息)。我不明白为什么这个问题仍然没有回答是为什么我有这些 ORA-00001: unique constraint (XXX.YYY) 违反了错误记录,而它们不应该记录。似乎错误记录机制不是以原子方式运行的。

编辑2:

EDIT3: 我玩了一下,能够重现这个错误:

在最后select * from err_test;我总是得到:ORA-00001: unique constraint (XXX.CONSTR) violated。现在奇怪的是,真正的 MERGE 语句(在生产中)不再在 PARALLEL 中工作,有时我仍然会收到这个错误......

EDIT4: 我标记为已接受的最佳答案,尽管问题本身并没有完全回答。看来这只是Oracle中的一个错误。