科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在不同的数据库中解析SQLServer数据

在不同的数据库中解析SQLServer数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在软件开发的初始阶段,开发商们总是想把整个系统的最小的细节设计好了,然后再去单线程的编写代码。这样软件开发完成需要很长时间,但开发商们一直都在这么做。

作者:Arthur Fuller 2007年3月15日

关键字: SQL Server

  • 评论
  • 分享微博
  • 分享邮件

这个方案完成了两个查询的合并。为了更明确的标识行源,我必须在清单E中包括一个初始列,这个初始列定义了源表。

我在Orders_1中增加了一行数据,这行数据是在Orders_2中找不到的。下面是结果集:

 (No column name)OrderNo     OrderDate   OrderNumberOrderDate

T1    1     2007-02-23 00:00:00.0001     2007-02-23 00:00:00.000

T1    2     2007-02-24 00:00:00.0002     2007-02-24 00:00:00.000

T1    4     2007-02-26 00:00:00.000NULL  NULL

T1    3011  2007-02-25 00:00:00.0003011  2007-02-25 00:00:00.000

T2    1     2007-02-23 00:00:00.0001     2007-02-23 00:00:00.000

T2    2     2007-02-24 00:00:00.0002     2007-02-24 00:00:00.000

T2    301   2007-02-24 00:00:00.000NULL  NULL

T2    3011  2007-02-25 00:00:00.0003011  2007-02-25 00:00:00.000

这个查询清单的所有行都来自于这两张表。要解决我们最初的问题,这可能已经足够了,但我们真正关心的是不匹配的行。你可以在每个连接之前,先将清单与Null进行查询测试,这样就可以把清单中的记录减少到只有不匹配的行,如清单F所示。

这样你就得到了一个真正有用的结果集了:

 (No column name)OrderNo     OrderDate   OrderNumberOrderDate

T1    4     2007-02-26 00:00:00.000NULL  NULL

T2    301   2007-02-24 00:00:00.000NULL  NULL

现在,你就可以为如何解决两个数据集的这个问题而做出明智的决定了。

注意实例:如果我假设几乎相同结构的表的话,保存信息是很简单的。在实践中,如果一个列名不同,另外一个(或更多)列名更有可能不同。列数可能也不同,但是那个问题超过了这个技巧的要解决的范围。我已经说明了一个在两个表之间确定差别的可靠方法,同时这个方法避免了使用NOT IN()来降低性能。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章