【问题标题】:oracle sql multiple new rows merge in to a tableoracle sql多个新行合并到一个表中
【发布时间】:2016-04-28 20:37:00
【问题描述】:

我需要使用 java 代码将新行插入到 oracle(12c) SQL 表中,前提是它们不存在 检查和插入的行可能超过 100 行

理想情况下,我希望有一个包含多个插入的合并语句 像这样:

MERGE INTO some_table t
USING(???)
ON(???)
WHEN MATCHED THEN UPDATE ???
WHEN NOT MATCHED THEN INSERT (t.id, t.val)
     value("some_id","some_data")
      ...
      ...
      ...

但我在语法上有问题,我找不到任何例子来说明这种情况

我想知道:

  1. 如果这可能的话
  2. 如果是,是正确的方法还是有更好的解决方案
  3. 应该是什么语法(一些例子会很棒)
  4. 如果不可能,那么正确的方法是什么。

感谢帮助

【问题讨论】:

  • java 无关紧要。您正在编写一个 sql 查询,无论您使用什么语言,这都是相同的查询。
  • 这是可能的,而且通常它甚至是插入的最佳解决方案(尤其是当您需要插入 AND 来更新目标表中的行时)。例如,可以在此处找到语法:docs.oracle.com/cd/B28359_01/server.111/b28286/… 将为您寻找几个示例。
  • 感谢 mathguy,我已经检查了该链接,但它仅显示如何合并其他表中的行,我需要添加新行 - 这让我感到困惑,再次感谢
  • 不,您不仅可以从表中合并,还可以从视图和子查询中合并。否则你将如何插入?一次一行,或者您是否有某种查询返回需要插入的内容?如果一次是一行(例如,在键盘上键入文字),那么插入语句是正确的解决方案。如果您要插入在数据库中以某种方式创建的行,则合并可能会更好。您需要插入的行的来源是什么?
  • 行的来源在数据库之外它来自java代码:用户上传xml文件,应用程序拥有并将数据转换为新行

标签: sql oracle sql-insert sql-merge


【解决方案1】:

按照 OldProgrammer 的建议,我将创建临时表,在其中插入新数据,然后将在两个表之间合并

【讨论】:

    猜你喜欢
    • 2014-05-29
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2015-05-27
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多