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

AND字段NOT IN(NULL)返回空集

滑令
2023-03-14
问题内容

为什么此查询返回一个空集:

select p.iuser_id,p.produit_id from portefeuille p
WHERE produit_id=48
AND p.iuser_id NOT IN (NULL);

而这个:

select p.iuser_id,p.produit_id from portefeuille p
WHERE produit_id=48
LIMIT 5

返回类似的结果

72968, 48
106967, 48
7381, 48
81678, 48
194250, 48

并且这些值都不为NULL或应等于NULL。(为了简洁起见,我添加了限制5,并且我正在使用MySql 5.1)

编辑:在这里,我将问题缩小为NOT IN(NULL)。原始查询有一个子查询,其中某些行包含NULL,例如:

WHERE user_id NOT IN( select user_id from mailsubscriptions )

和一些user_id为NULL,但集合中只有一个NULL会污染整个查询。


问题答案:

x NOT IN(…)定义为x与子查询返回的每个值之间的一系列比较。SQL使用三值逻辑,逻辑表达式的三个可能值是 truefalse 或_unknown_ 。值与NULL的比较是 未知的, 并且如果那些NOT IN比较中的任何一个是 未知的, 那么结果也将被视为 未知



 类似资料:
  • 以下模式在可选对象中包含非空字段(整个对象允许为空)。它定义了一个父对象的列表,这些父对象具有可选字段“孩子”——一些父对象允许具有空“孩子”。 以下GraphQL查询返回预期的父对象列表(其中一些具有null子值)。但它也返回附加到结果的错误。这是GraphQL(孩子是可选的)中的错误吗?还是预期行为?

  • 本文向大家介绍MySQL查询空字段或非空字段(is null和not null),包括了MySQL查询空字段或非空字段(is null和not null)的使用技巧和注意事项,需要的朋友参考一下 现在我们先来把test表中的一条记录的birth字段设置为空。 mysql> update test set t_birth=null where t_id=1; Query OK, 1 row affe

  • 我在使用Guice时遇到空值问题。Nex我向您展示了一个类似场景的示例。我知道字段注入是一种不好的做法,但我希望它在演示中像这样工作 我有具体类命名为B(这是我要注入的一个): 我有一个名为A的抽象类,它有类B(我想通过字段注入注入的那个): 现在是另一个扩展A的具体类C: 我的GUI配置如下: 然后我对斯波克进行了测试: 谢谢:)

  • 我有以下数据在我的表"设备" 我执行了下面的查询 它返回下面给出的结果 如何解决这个问题,让它忽略NULL,结果应该是

  • 问题内容: 我的“设备”表中有以下数据 我执行以下查询 返回下面给出的结果 如何得出这一点,以便它应该忽略NULL并且结果应该是 问题答案: 通过将其包装在空字符串中来转换值

  • 我正在调用tabhost片段活动中的映射片段