MySQL - 搜索 NULL 值

标签 mysql isnull

我测试了一个奇怪的查询,该查询涉及我搜索不存在的记录。

简而言之,我有 3 个: tbl_customers tbl_customers_notes tbl_customers_pipelines

客户和注释非常明显,但管道则不然。基本上,管道就是管理员分配给单个 customerid 的内容。

这是管道的表结构:

ID | customerid | adminid |

我不必创建 ID 列,但我还是创建了,而且它是自动递增的。

每个客户记录开始时都没有加入管道记录。所以第一次创建customerid的时候是空的。如果我想指派管理员来管理那个新的 customerid,只需为每个 adminid 添加一条记录:

ID  | customerid | adminid
---------------------------
1   |    45      |   6
2   |    45      |   8
3   |    45      |   10

这意味着 customerid: 45 分配了 3 个 adminid。
(顺便说一句,adminid 就像销售人员)

我在下面有一个查询,可以让我从特定的 adminid 中搜索缺少注释的 customerid。而且效果很好:

SELECT c.*
FROM `tbl_customers` c 
LEFT JOIN `tbl_customers_pipelines` cp ON c.customerid = cp.customerid 
WHERE c.customerid 
          NOT IN(SELECT n.customerid 
                 FROM `tbl_customers_notes` n 
                 WHERE n.datesubmitted BETWEEN '2011-12-01 14:00:00' 
                 AND '2011-12-03 13:59:59' 
                 AND n.categoryid IN(10)
                )

AND cp.adminid = 855 

您会注意到我在 WHERE 子句之后执行子查询。这确实按预期工作。我仅显示具有特定注释且在管道表中具有特定 adminid 的客户记录。

我想做相反的事情。
并搜索完全缺少管道/管理记录的客户记录。 我本质上是在寻找有注释但没有附加 adminid 的 customerid。 这就是我在构建查询时遇到一些困惑的地方。

我唯一的想法是用“AND ISNULL(cp.ID)”替换“AND cp.adminid = 855”

这不会产生任何结果。但确实有记载。所以查询刚刚结束。 有人看到我遗漏了什么吗?

最佳答案

尝试:

AND cp.ID IS NULL

代替

AND cp.adminid = 855

关于MySQL - 搜索 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495537/

相关文章:

java - Scala 检查可选字符串是否为 null 或为空

java和mysql高并发瓶颈解决方案

php - 为什么插入查询结果不显示在数据库中?

php - 检查数组值是否已设置且为空

MySQL LEFT JOIN 和 IS NULL

ssis - 如何在 SSIS 中同时使用三元运算符和 isnull 函数?

mysql - 使用node js读取mysql属性文件

mysql - Ruby 1.9.3 上的 Rails 2.3 编码错误

mysql - 如何将表与许多其他表之一关联起来?

SQL:如果参数为空,则选择所有行,否则仅选择匹配的行