合并到广告订单中

2024-02-22

我有一个看起来像这样的声明:

MERGE INTO someTable st
USING
(
    SELECT id,field1,field2,etc FROM otherTable
) ot on st.field1=ot.field1
WHEN NOT MATCHED THEN
    INSERT (field1,field2,etc)
    VALUES (ot.field1,ot.field2,ot.etc)

where 其他表有一个自动递增的id field.

我想插入一些表id现场其他表,使得order of id当插入不匹配的字段时,s 被保留。

快速浏览一下docs http://technet.microsoft.com/en-us/library/bb510625.aspx似乎表明没有任何功能支持这一点。

这是否可能,或者是否有其他方法可以满足我的要求进行插入?

编辑:一种方法是添加一个附加字段一些表捕获顺序。如果可能的话我宁愿不这样做。

...经过反思,上述方法似乎是可行的方法。


我无法说出发问者在这里提出的要求,因为它并不能说明问题any sense.

那么让我们假设一个不同的问题:

相反,假设我有一个没有标识字段的堆表,但它确实有一个“Visited“ 日期字段。
堆表记录人员网页访问,我将其加载到我的数据仓库中。
在此数据仓库中,我想使用代理键“WebHitID”来引用这些关系。
让我们使用 Merge 来执行表的初始加载,然后继续调用它以保持表同步。

我知道,如果我将记录插入到表中,那么我希望 ID(由识别字段生成)根据我选择的任何排序方式(假设“Visited" Date).
期望整数 ID 与它的创建时间相对于表中的其余记录相关联的情况并不少见。
我知道这并不总是 100% 的情况,但请容我容一下。

这可以通过合并实现。

使用(感觉就像hack) TOP 将允许在我们的插入中进行排序:

MERGE DW.dbo.WebHit AS Target --This table as an Identity Field called WebHitID.
USING
(
    SELECT TOP 9223372036854775807 --Biggest BigInt (to be safe).
           PWV.PersonID, PWV.WebPageID, PWV.Visited
      FROM ProdDB.dbo.Person_WebPage_Visit AS PWV
     ORDER BY PWV.Visited --Works only with TOP when inside a MERGE statement.
) AS Source
  ON Source.PersonID  = Target.PersonID
 AND Source.WebPageID = Target.WebPageID
 AND Source.Visited   = Target.Visited
WHEN NOT MATCHED BY Target THEN --Not in Target-Table, but in Source-Table.
    INSERT (PersonID, WebPageID, Visited) --This Insert populates our WebHitID.
    VALUES (Source.PersonID, Source.WebPageID, Source.Visited)
WHEN NOT MATCHED BY Source THEN --In Target-Table, but not in Source-Table.
    DELETE --In case our WebHit log in Prod is archived/trimmed to save space.
;


您可以看到我选择使用 TOP 9223372036854775807 (最大的整数)来提取所有内容。
如果你有足够的资源来合并更多的资源,那么你应该将其分块。
虽然这尖叫声“黑客解决方法“对我来说,它应该带你去你需要去的地方。

我已经在一个小样本集上对此进行了测试并验证了它的工作原理。 不过,我还没有研究过它对更大的复杂数据集的性能影响,所以 YMMV 有或没有 TOP。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并到广告订单中 的相关文章

随机推荐

  • 如何查看通道消费者引发的异常

    我开始使用django channels我觉得这太棒了 然而 调试消费者是痛苦的 因为当消费者内部引发一些异常时 没有任何内容打印到终端 websocket 只是断开连接 未显示的异常类型不易识别 系统地情况是这样的AssertionErr
  • 为 Android 构建 ltrace

    我正在尝试为 Android 构建 ltrace 我尝试了几种方法都没有效果 我能够使用 crosstool ng 的 arm unknown linux gnueabi 生成一个编译源代码的 bin 文件 并且 configure hos
  • PHP json_encode 不会转义所有 JSON 控制字符

    PHP的json encode函数没有转义所有原因吗JSON http www json org 字符串中的控制字符 例如 我们采用一个跨越两行并包含控制字符 r n 的字符串 请注意 回车符和换行符是未转义的 为什么 我使用 jQuery
  • 在迭代列表时将元素添加到列表中。 (Java)[重复]

    这个问题在这里已经有答案了 可能的重复 Java 在迭代期间向集合添加元素 https stackoverflow com questions 993025 java adding elements to a collection duri
  • C++ - 如何截屏(某些窗口除外)

    情况 我有一个通过 Internet 执行屏幕共享的软件 其中一个用户充当演示者 其他用户充当观众 与会者 除了演示窗口之外 演示者还会在屏幕上显示一组非共享窗口 用于开始共享 停止共享等的按钮栏 Skype 窗口等 演示者可以通过屏幕共享
  • 在 C++ 中扩展枚举?

    C 有没有办法扩展 继承 枚举 I E enum Enum A B C enum EnumEx public Enum D E F 或者至少定义它们之间的转换 不 那里没有 enum确实是 C 中的可怜之处 这当然是不幸的 即便是class
  • 包含conj的接口?

    作为练习 我正在开发一个类似于 Vector 的数据结构 我已经实现了 IPercientVector 扩展的所有接口 但我还没有找到定义 conj 的接口 那是哪个界面 谢谢 clojure lang IPersistentCollect
  • 与push()相反; [复制]

    这个问题在这里已经有答案了 JavaScript 的反义词是什么push method 假设我有一个数组 var exampleArray remove 我想要push 这个单词 keep exampleArray push keep 如何
  • “职称级别不一致”是什么意思?

    我在我的文档版本中收到了各种 标题级别不一致 的警告 据我所知 我有一个一致的结构 如下所示 Big Title Section Subsection 但该错误与自动生成相关 automodapi 我无法找到的文本 Classes 我怎样才
  • WP7从Tombstone恢复并返回页面

    从逻辑删除恢复时 是否有一种很好 优雅的方式返回用户所在的页面 我不确定我的应用程序是否正常工作 但我总是回到我的主页 我的应用程序设置了一个带有枢轴控件的主页 并且多个枢轴项目将导航到新页面 如果有意义的话 我的导航看起来像这样 数据透视
  • 谷歌放置自动完成API Android:边界不起作用

    我定义我的界限如下 private static final LatLngBounds BOUNDS CHENNAI new LatLngBounds new LatLng 12 8339547 80 0817007 new LatLng
  • Kubernetes 自动缩放容器

    是否可以自动缩放 docker 容器 其中包含 kubernetes 内的应用程序服务器 如 wildfly tomcat jetty 例如在 cpu 和 ram 使用或基于 http 请求 如果有一个内置功能 我找不到它 或者是否可以为此
  • 使用 PHP 实现 2 路加密的最佳方法是什么?

    我想在 PHP 中使用双向加密来加密我网站上的密码 我遇到过 mcrypt 库 但它看起来很麻烦 有人知道其他更简单但安全的方法吗 我确实可以访问 Zend Framework 因此使用它的解决方案也可以 我实际上需要双向加密 因为我的客户
  • 使用 ThreadStatic 来替换昂贵的本地变量——好主意吗?

    Update 正如我预料的那样 社区针对这个问题给出的合理建议是 衡量一下然后看看 chibacity 发布了 答案 https stackoverflow com questions 4864974 using threadstatic
  • 以编程方式在 Android 中配置第 3 方电子邮件帐户 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 禁用 JQuery 移动 UI 中的哈希更改控制器并替换为backbone.js

    我在用着jQuery 移动用户界面widgit 套件很不错 不过我也使用backbone js 它带有一个非常简洁的hashchange 控制器框架 问题是 JQuery Mobile UI 有一个内置的蹩脚哈希更改控制器 它假设您会alw
  • jQuery 缓动函数中有哪些不同的参数

    我看到 jQuery 的缓动函数位于https github com danro jquery easing blob master jquery easing js https github com danro jquery easing
  • 事务与批量查询以避免重复的 MySQL 插入

    我有一个PHP脚本 deleteAndReInsert php 删除所有行name Bob 然后插入 1000 个新行name Bob 这工作正常 最初的空表最终达到预期的 1000 行 query pdo gt prepare DELET
  • 合并数组中的对象并保留相同属性的最高值

    我有这个数组 我想合并其中的对象 null null 1 1 2 1 3 1 2 2 5 1 我考虑过使用这样的东西 var o1 a 1 b 1 c 1 var o2 b 2 c 2 var o3 c 3 var obj Object a
  • 合并到广告订单中

    我有一个看起来像这样的声明 MERGE INTO someTable st USING SELECT id field1 field2 etc FROM otherTable ot on st field1 ot field1 WHEN N