所以我知道mysql说:
通常,包含 NULL 值的表和空表是“极端情况”。编写子查询时,请始终考虑是否考虑了这两种可能性。 http://dev.mysql.com/doc/refman/5.0/en/all-subqueries.html
但这没有意义。如果我说:
select * from users where users.id NOT IN (NULL)
;
它不应该返回所有用户吗?即使按照他们自己的逻辑:
NOT IN 是 <> ALL 的别名。因此,这两个语句是相同的:
对我来说,返回所有 id 不等于 NULL 的记录,即所有记录。
所以问题是,我怎样才能实现选择不在特定集合中的所有记录,即使该集合是空的。
显然,在我的应用程序代码(Rails 应用程序)中,我可以检查集合是否为空并修改我的查询,但这似乎很荒谬。有没有办法在 sql 中完成这一切?