GVKun编程网logo

以下两个更新语句在SQL中有何不同?

14

想了解以下两个更新语句在SQL中有何不同?的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于$(this)和this关键字在jQuery中有何不同?、Aerospike与其他键值Nosq

想了解以下两个更新语句在SQL中有何不同?的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于$(this) 和 this 关键字在 jQuery 中有何不同?、Aerospike与其他键值Nosql数据库有何不同?[关闭]、ARM 架构与 x86 有何不同?、C#6.0 / New null检查语法的新语法有何不同?的新知识。

本文目录一览:

以下两个更新语句在SQL中有何不同?

以下两个更新语句在SQL中有何不同?

我有两个更新语句。他们两个都给出相同的输出。它们有何不同,哪种更好使用?

陈述1:

UPDATE liSET li.Description = im.DescriptionFROM tbSupplierLineItem liJOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode WHERE li.ProcessedDate >= CONVERT(DATE,GETDATE())

陈述2:

UPDATE liSET li.Description = im.DescriptionFROM tbSupplierLineItem liJOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode AND li.ProcessedDate >= CONVERT(DATE,GETDATE())

答案1

小编典典

对于内部连接,差异只是语义上的差异。这两个查询应产生完全相同的查询计划和完全相同的结果。

但是,当您使用外部联接时,条件是否在where子句或onon子句上就很重要。

UPDATE liSET li.Description = im.DescriptionFROM tbSupplierLineItem liRIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode                                 AND li.ProcessedDate >= CONVERT(DATE,GETDATE())

不同于

UPDATE liSET li.Description = im.DescriptionFROM tbSupplierLineItem liRIGHT JOIN tbIMPACArchieveNew im ON li.ItemId = im.CommomCode WHERE li.ProcessedDate >= CONVERT(DATE,GETDATE())

不仅在语义层面上。
虽然第一个查询将返回右连接的预期结果,但第二个查询实际上将返回内部连接的预期结果。
这是因为如果您在左表上有不匹配的记录,那么右表的值可能为null,并且由于将任何值与null(包括另一个null)进行比较都会导致结果为false,因此基本上是将右连接更改为内部联接。

$(this) 和 this 关键字在 jQuery 中有何不同?

$(this) 和 this 关键字在 jQuery 中有何不同?

$(this) 和 this 关键字在 jQuery 中有何不同?
$(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。
而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。
你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,
例如 $(this)。

Aerospike与其他键值Nosql数据库有何不同?[关闭]

Aerospike与其他键值Nosql数据库有何不同?[关闭]

Aerospike是具有ACID属性的键值,内存中可操作的NoSQL数据库,该数据库支持复杂的对象且易于扩展。但是我已经使用了绝对相同的东西。

Redis还是一个键值的内存NoSQL数据库(但对磁盘持久)。它还支持不同的复杂对象。但是与Aerospike相比,Redis已使用了很多时间,已经有一个活跃的社区并在其中开发了许多项目。

那么,Aerospike和其他无SQL键值数据库(例如Redis)之间有什么区别?是否有一个更适合于空中突击的地方。

PS:我正在寻找使用至少这些数据库之一(最好同时使用这两个数据库)的人的答案,并希望他们能提供真实的生活经验(而不是从官方网站复制粘贴)。

答案1

小编典典

如果必须用一个词来回答,则为“性能”。Aerospike的性能比那里的任何clustered-
nosql解决方案都要好得多。每个节点更高的性能意味着更小的集群,这会降低总拥有成本(TCO)和维护成本。Aerospike会执行自动群集,自动分片,自动重新平衡(当群集状态更改时),其中大多数需要其他数据库中的手动步骤。

我说“集群”是因为我不想在该组中混用Redis(尽管Redis集群位于beta中)。Aerospike和redis在内存中的纯性能将是可比的。但是Redis希望在应用程序层处理很多事情,例如分片,请求重定向等。即使redis可以持久化(快照或AOF),它也有其自身的问题,因为它的设计更像是插件。Aerospike是本着持久性发展的。Redis的集群还涉及设置主从服务器等。您可能想看一下本演讲,比较和对比Redis与Aerospike。

ARM 架构与 x86 有何不同?

ARM 架构与 x86 有何不同?

x86 架构是专为使用键盘而设计的,而 ARM 则希望是移动设备?两者之间的主要区别是什么?

C#6.0 / New null检查语法的新语法有何不同?

C#6.0 / New null检查语法的新语法有何不同?

首先,我为这个问题中使用的标题道歉,因为我甚至不知道如何询问它以及如何搜索它,所以它可能存在于某个地方,类似于这个问题.

我最近在Visual Studio 2015上找到了一个我从未见过的潜在修复程序.在构建EventHandlers时,我通常会这样做:

public event EventHandler MyEvent;

internal void onMyEvent(EventArgs eventArgs) {
    if(MyEvent != null) {
        MyEvent(this,eventArgs);
    }
}

但是现在,Visual Studio 2015将使if语句和相应的括号灰显,并且在悬停时会显示一条消息,指出可以简化委托调用.简化版本看起来像这样:

public event EventHandler MyEvent;

internal void onMyEvent(EventArgs eventArgs) {
    MyEvent?.Invoke(this,eventArgs);
}

这究竟如何运作?不会因为调用null之外的方法而抛出异常,或者代码在’?’之前停止执行一片空白?

另外,我可以用’?’替换检查变量/方法/方法是否为null的每个if语句,而不考虑代码的可读性?

旁注:我假设这是来自新版本的C#,6.0,因为我以前从未见过它.如果我错了,请纠正我

解决方法

正如它指出的那样,C#6的功能被称为 Null-conditional Operators.

使用ILSpy查看生成的C#代码也是值得的:

internal void onMyEvent(EventArgs eventArgs)
{
    EventHandler expr_07 = this.MyEvent;
    if (expr_07 != null)
    {
        expr_07(this,eventArgs);
    }
}

如您所见,这是一个纯粹的编译器功能..它只是将您的代码重写为传统的空检查.

要回答你的问题(虽然我猜你已经通过查看代码来解决这个问题):

Wouldn’t an Exception be thrown due to be invoking a method out of
null or the code stops executing if the expression before ‘?’ is null?

当eventhandler为null时,不会抛出异常.当一个对象出现之前,代码才会被执行?一片空白.

现在直到这一点,这只是一个方法调用.显然,如果你想要一个带有Null条件运算符的表达式结果的值,它有点复杂:如果它是一个引用类型,那么你的变量保持为null,但如果它是一个值类型那么它将自动为空,如果您使用’?’的对象也将为null operator为null.

这是针对这种情况的解编译代码:

Program.Customer[] array = new Program.Customer[10];
    if (array == null)
    {
        int? arg_33_0 = null;
    }
    else
    {
        Program.Customer expr_1A = array[0];
        if (expr_1A == null)
        {
            int? arg_33_0 = null;
        }
        else
        {
            new int?(expr_1A.IntField);
        }
    }

我们今天的关于以下两个更新语句在SQL中有何不同?的分享就到这里,谢谢您的阅读,如果想了解更多关于$(this) 和 this 关键字在 jQuery 中有何不同?、Aerospike与其他键值Nosql数据库有何不同?[关闭]、ARM 架构与 x86 有何不同?、C#6.0 / New null检查语法的新语法有何不同?的相关信息,可以在本站进行搜索。

本文标签: