当前位置: 首页 > 面试题库 >

IN运算符SQL

蒋联
2023-03-14
问题内容

我有一个名为NUMS的表,其中只有n列。
然后在其中填充值1,2,3,4,5,null。

现在查询

SELECT n FROM Nums 
 WHERE n IN (1, 2, null)

在这种情况下,我想它已转换为

SELECT n FROM Nums 
 Where n = 1 OR n = 2 OR n = null

我也在比较n和一个应该产生未知值的null值,它应该返回一个空集。但是它返回1,2(null不返回,尽管包含在IN运算符中)

现在查询

SELECT n FROM Nums WHERE n NOT IN(1, 2, null)

…转换为:

SELECT n FROM Nums 
 Where n!=1 AND n!=2 AND n!=null

在这里,我上面所说的有效,并且不返回任何内容。

任何人都可以详细解释发生了什么。


问题答案:

好,我找到了答案

SELECT n FROM Nums    
WHERE n NOT IN (1, 2, null)

评估为

SELECT n FROM Nums  
n!=1 AND n!=2 AND n!=null

上次比较的结果将永远是未知的。
AND的真值表显示,只要其中一个未知数(U,T)(U,F),(U,U)被引用,结果就只能是U或F(U =未知,F =False)因此,它不会包含在结果集中。

的情况下

SELECT n FROM Nums
WHERE n IN (1, 2, null)

等于

SELECT n FROM Nums
WHERE n = 1 OR n =2 OR n=null

现在对于n = 1的行,操作n = 1将变为true ,对于n = 2的行,操作n = 2 将变为true,并且对于所有行n = null将是未知的

因此,它在结果集中给出1和2。
希望大家喜欢。
任何人都可以将我的回复标记为答案



 类似资料:
  • 问题内容: 我有下面的SQL,但无法正常工作 产品类别是婴儿礼物篮,关键字字段是婴儿礼物篮,婴儿礼物 基本上想在关键字列表中找到product_category时获得sub_category? 问题答案: 您将需要使用 使用规范化的数据库结构,这将更加容易和高效。(您当前在单个列中包含多个关键字的结构违反了第一个范式)

  • 问题内容: 对于百万分之一的时间,我希望使用Java中的运算符,类似于SQL中的运算符。它可以作为编译器语法糖来实现。所以这 …真的很棒。实际上,以上内容与此处相当冗长的(且不适用于原始类型)构造相同: 或针对,和类似的类型: 也许会有更有效的实现。 题: 这样的东西会成为Java 8的一部分吗?如果没有,我该如何提出建议?还是我现在可以使用任何等效的构造? 问题答案: 使用op4j: 使用相同的

  • In 运算符 判断表达式的数值是否等于指定列表中几个数值中的一个。 语法 expr [Not] In(value1, value2, . . .) 说明 运算符 In 的语法包含以下的部分: 部分 说明 expr 识别字段的表达式,它包含要计算的数据。 value1,value2 为要计算的 expr 而设置的表达式或表达式列表。 如果在数值的列表中找到了 expr ,则 In 运算符返回 Tru

  • In 运算符示例 下列示例使用在 Northwind.mdb 数据库的订单表创建查询,且该查询包含所有送货到 Lancashire 和 Essex 的数据及送货日期。 此示例调用过程 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。 Sub InX() Dim dbs As Database, rst As Recordset ' 在您的计算机中修改此行使其正确指到 No

  • 问题内容: 我试图在SQL中找到与\ 等效的ElasticSearch查询。 我知道我们可以使用带有多个OR的QueryString查询来获得相同的答案,但这最终导致很多OR。 谁能分享这个例子? 问题答案: 与克里斯建议的评论类似,类似的替换是 过滤器 (查询暗示得分,这可能会改善返回的订单)。 等效的Elasticsearch 1.x过滤器为: 等效的Elasticsearch 2.x +过滤

  • 本文向大家介绍MySQL XOR运算符与IN子句?,包括了MySQL XOR运算符与IN子句?的使用技巧和注意事项,需要的朋友参考一下 如果一个或另一个操作数(或表达式)但不是两个都为TRUE,则MySQL XOR返回TRUE。IN子句用于指定任何其他MySQL查询的条件。 让我们先创建一个表 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出-