MySQL"Not IN"查询突然停止返回结果

Jas*_*ter 1 php mysql

我正在为共享主机环境中的某个站点做一些工作,该环境有翻转我们设置的历史记录.本周,更新脚本突然停止工作,其根本原因是用于返回结果的NOT IN子句不再这样做.

查询的本质是:

SELECT  *
FROM db1.entry
where entry_id not in
(
  select entry_id from db2.content
)
Run Code Online (Sandbox Code Playgroud)

我可以通过直接检查这两个表来验证是否确实存在应该返回的记录.运行以下两个查询时,第一个返回entry_ids,第二个不返回:

SELECT  *
FROM db1.entry 
order by entry_id desc

SELECT  *
FROM db2.content
order by entry_id desc
Run Code Online (Sandbox Code Playgroud)

为了重新进行迭代,这几个月都正常工作.没有进行任何代码更改,但可能会在此过程中更改MySQL设置.PHP环境中也可能发生了某些变化,但这似乎不太可能,因为当从phpMyAdmin运行时,有问题的查询以与从实时站点运行时相同的方式失败.

当然,它仍然可以在我的开发盒上完美运行.

实时站点运行MySQL 4.1.11版.我的问题是,是否有人知道该版本的MySQL设置会改变这些NOT IN查询的工作方式?

谢谢.

Qua*_*noi 5

确保你的内部查询没有返回NULL.

来自文档:

为了符合SQL标准,不仅IN 返回NULL左侧的表达式NULL,而且如果在列表中找不到匹配项,并且列表中的一个表达式是NULL.