0

我不明白为什么 MySQL 返回“MySQL 没有产生记录”而我使用 EXISTS(我愿意选择一个不产生记录的子查询):

SELECT  page_ID
    FROM ranks_update
    WHERE EXISTS (
    SELECT *
    FROM ranks_update
    WHERE ranking_ID = 3
        AND current_rank = 1
        AND rating_time < '2012-08-05 02:57:59'
        AND rating_time >= '2012-08-05 00:00:00'  
    GROUP BY page_ID
);

根据定义,EXISTS 允许从不返回任何记录的查询中获取结果。到目前为止,在这种情况下我总是得到 NULL 。

4

1 回答 1

1

它正在返回该消息,因为没有记录匹配。NULL 是列的值。它与空返回集完全不同。

如果您有聚合函数,则空集返回 NULL。因此,以下将返回 NULL 值:

select max(Page_ID)

这将返回 0:

select count(Page_ID)
于 2012-08-05T16:39:12.440 回答