MySQL - 使用不存在的地方返回null

时间:2016-11-22 22:56:13

标签: mysql

我试图找出简单查询返回null的原因:

SELECT CardNo FROM BOOK_LOANS WHERE DueDate=DateReturned AND
NOT EXISTS
(SELECT CardNo FROM BOOK_LOANS WHERE DueDate<>DateReturned)

我一直在了解WHERE NOT EXISTS,但似乎无法找到同时使用WHERENOT EXISTS的任何示例。这有更好的方法吗?

当我改为使用NOT IN但我必须在此查询中使用NOT EXISTS时,我的查询才有效

2 个答案:

答案 0 :(得分:0)

使用NOT EXISTS子句时,必须将子查询与主查询链接。

一个例子:

SELECT *
FROM persons p
WHERE NOT EXISTS(SELECT 'OTHER'
FROM persons p2
WHERE p.id <> p2.id AND p.city_id = p2.city_id)

在此查询中,我想提取同一城市中不存在另一个人的所有人。所以我将子查询表(人员p2)与主查询表(人员p)

联系起来

在您的示例中,当然存在两个DueDate<>DateReturned的记录,因此您的查询始终返回NULL

答案 1 :(得分:0)

尝试以下查询:

SELECT CardNo FROM BOOK_LOANS A WHERE A.DueDate=A.DateReturned AND
NOT EXISTS
(SELECT CardNo FROM BOOK_LOANS B WHERE B.CardNo = A.CardNo B.DueDate<>B.DateReturned)

基本上,您需要在CardNo上使用内部查询加入外部查询,否则NOT EXISTS将返回日期不匹配的任何记录。