だから私はmysqlが言うことを知っています:
一般に、NULL 値を含むテーブルと空のテーブルは「エッジ ケース」です。サブクエリを作成するときは、これら 2 つの可能性を考慮しているかどうかを常に考慮してください。 http://dev.mysql.com/doc/refman/5.0/en/all-subqueries.html
しかし、これは意味がありません。私が言うなら:
select * from users where users.id NOT IN (NULL)
;
すべてのユーザーを返す必要はありませんか? 言う彼ら自身の論理によってさえ:
NOT IN は <> ALL のエイリアスです。したがって、これら 2 つのステートメントは同じです。
私が言うには、id が NULL と等しくないすべてのレコード、つまりすべてのレコードを返します。
したがって、問題は、そのセットが空であっても、特定のセットに含まれていないすべてのレコードを選択するにはどうすればよいかということです。
明らかに、私のアプリケーション コード (Rails アプリ) では、セットが空かどうかを確認してクエリを変更できますが、それはばかげているように思えます。これをすべてSQLで行う方法はありますか?