问题标签 [sql-merge]

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 投票
2 回答
25818 浏览

sql-server - 插入第三张表的 SQL 合并

我想创建一个合并,它将比较两个表并将不匹配的值插入到另一个第三个表或表变量中,如下所示:

可以这样做还是有其他方法?

0 投票
1 回答
16237 浏览

sql-server - SQL Server MERGE + 加入其他表

我在数据库项目中使用 MERGE 语句从静态值集中填充参考数据,如下所示:

当我想根据其他表中的内容填充辅助表时,问题就出现了。例如,我的 UserPermission 表包含用户 ID 和角色 ID,我希望我的静态值设置为 ('me@somewhere.com', 'Admin') 并且能够加入用户和权限以获得插入的 ID 值。不知道在哪里做...

编辑:

用户表(ID、用户名)1、John Smith 2、Mark Wahlerg

角色表(ID, RoleName) 1, Administrator 2, User 3, Guest

用户角色表(用户 ID、角色 ID)

我希望 MERGE 语句的 SQL 来调整 User-Role 表,以便我可以指定如下内容:

它将加入以确定 ID,插入不存在的组合(并可能删除存在但不在 MERGE 中的组合。

解决方案:

0 投票
4 回答
131600 浏览

sql - 在 Oracle SQL 中执行 MERGE 时,如何更新 SOURCE 中不匹配的行?

我有一个main数据库和一个report数据库,我需要将一个表mainreport.

但是,当数据库中的项目被删除时main,我只想IsDeleted在数据库中设置一个标志report

什么是一种优雅的方式来做到这一点?

我目前正在使用 MERGE 语句,如下所示:

WHEN NOT MATCHED语句为我提供了来自 的所有新值main,但我也想更新来自 的所有旧值report

我正在使用 Oracle PL/SQL。

0 投票
2 回答
26249 浏览

sql - Oracle 合并与选择然后插入或更新

什么更快?

合并声明

或者

查询 select 语句,然后使用 update 或 insert 语句。

如果行数 == 0

别的

0 投票
1 回答
130 浏览

sql - SQL 按需缓存表(可能使用 SQL MERGE)

SQL我正在为应用程序实现按需缓存表,所以我有

CacheTable带柱子Type, Number, Value

然后我有一个函数叫做GetValue( Type, Number )

所以我想要一个执行以下操作的函数

If ( CacheTablecontains Type, Number) 然后返回值 Else 调用GetValue( Type, Number)并将该值放入CacheTable并返回该值

有谁知道最优雅的方式来做到这一点?

我正在考虑使用SQL merge.

0 投票
3 回答
11111 浏览

sql - H2数据库中的Oracle MERGE语句

我们开始使用内存数据库中的 H2 进行自动化测试。我们将 Oracle 用于我们的生产和开发环境。所以这个想法是复制 H2 测试数据库中的表结构,就像它在我们的 Oracle 开发数据库中一样。

Oracle SQL 语句包括 MERGE 语句,并在查询中使用表名和 USING 的别名。

如何动态修改此查询以与 H2 兼容,而不会改变开发环境中的现有查询?

与 H2 兼容的 Oracle SQL 示例,

(T1 & T2 是表的别名)

0 投票
1 回答
4100 浏览

sql - 存储过程作为 MERGE [INSERT] 语句中的参数

我需要通过以下方式合并两个表:

  • 目标有一个额外的列 ID。此 ID 来自另一个单列主表。
  • 在 Merge 语句中插入记录时,我需要在 mater 表中插入一个新行并使用它id插入到 TARGET 表中。

我创建了一个存储过程,它插入并返回新插入的 ID。现在问题出在 SQL Merge 内部,我们不能调用存储的 Proc。

这个问题的解决方案是什么?不能使用标量函数,因为 INSERT 不能在函数中执行。

0 投票
2 回答
2453 浏览

sql - 记录 MERGE 语句的结果

我有 2 个表:一个带有原始数据的临时表。其中的行可能会重复(超过 1 次)。第二个是具有实际数据的目标表(每一行都是唯一的)。

我正在使用游标传输行。在游标内,我使用 MERGE 语句。如何使用 DBMS_OUTPUT.PUT_LINE 打印到控制台,哪些行被更新,哪些被删除?

根据官方文档,此声明没有此类功能。

有什么解决方法吗?

0 投票
2 回答
955 浏览

sql - 将表与数组合并

我有一个表格和一个数组,我喜欢合并它们。

结构(t=目标,s=源):

当 t.ID=s.ID 和 t.gID=s.gID 那么什么都不会发生。当 s.ID < 0 然后插入。当 s.ID 不存在时删除。

我无法在合并查询中构建它:

当每一行的@array 中的gID=1 时,查询将删除所有gID=2 的。但只有 gID=1 应该受到影响。

有人知道如何解决这个问题吗?

0 投票
1 回答
1004 浏览

sql - 合并中的可选参数

我有一个用于更新 SQL Server 数据库中记录的存储过程。

如果找到匹配项并提供 null 作为变量,我想使用数据库中的现有值。

通常只有部分数据可用,因此该过程分几个阶段执行以完成记录。我并不总是在每次执行时都有所有变量。

为什么以下 CASE 不起作用?如果提供了空值,它将替换字段中的现有数据。