3

entityidという名前の列を持つplatformという名前のテーブルがあります。entityid のデータは nnn の形式に従う必要があります (n は 1 つ以上の数字で、最初の数字はサイト ID です)。

このクエリを実行すると:

SELECT count(*) FROM platform

取得: 16063 したがって、テーブルには 16063 行あります。サイト 18 のみをフィルタリングしようとすると、次のクエリを実行します。

SELECT count(*) FROM platform
where entityid like '18.%.%'

私が得る: 4454 これまでのところ、とても良い. しかし、サイト 18 にないプラットフォームを見つけようとすると、次のようになります。

SELECT count(*) FROM platform
where entityid not like '18.%.%'

取得: 11608 ここに問題があります: 4454 + 11608 = 16062
レコードがありません。サイト 18 にあるすべてのプラットフォームを取得していて、サイト 18 にないすべてのプラットフォームを取得していると思います。1 つのレコードが欠落しているのはどうしてですか?

4

1 に答える 1

3

問題はおそらく null 値です。これを試して、レコードが返されるかどうかを確認してください。

select *
from platform
where entityid is null;

NULL 値は、ほとんどすべての比較に失敗します ( を除くis null)。

于 2013-05-23T18:53:55.477 に答える