想了解以下两个更新语句在SQL中有何不同?的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于$(this)和this关键字在jQuery中有何不同?、Aerospike与其他键值Nosq
想了解以下两个更新语句在SQL中有何不同?的新动态吗?本文将为您提供详细的信息,此外,我们还将为您介绍关于$(this) 和 this 关键字在 jQuery 中有何不同?、Aerospike与其他键值Nosql数据库有何不同?[关闭]、ARM 架构与 x86 有何不同?、C#6.0 / New null检查语法的新语法有何不同?的新知识。
本文目录一览:- 以下两个更新语句在SQL中有何不同?
- $(this) 和 this 关键字在 jQuery 中有何不同?
- Aerospike与其他键值Nosql数据库有何不同?[关闭]
- ARM 架构与 x86 有何不同?
- C#6.0 / New null检查语法的新语法有何不同?
以下两个更新语句在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
子句或on
on子句上就很重要。
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) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。
而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。
你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,
例如 $(this)。
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 有何不同?
x86 架构是专为使用键盘而设计的,而 ARM 则希望是移动设备?两者之间的主要区别是什么?
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,因为我以前从未见过它.如果我错了,请纠正我
解决方法
使用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检查语法的新语法有何不同?的相关信息,可以在本站进行搜索。
本文标签: