У меня есть таблица с столбцом device
, которая может быть «P», «T» или «NULL», но состояние, подобное device NOT IN('P', 'T')
, похоже, пропустит строки с NULL. Может быть продемонстрировано со следующими запросамиBigQuery COUNT (*) ... WHERE NOT (...) возвращает запутывающие результаты
$ bq query 'SELECT count(*) FROM t'
+----------+
| f0_ |
+----------+
| 29542063 |
+----------+
$ bq query "SELECT count(*) FROM t WHERE device = 'P' OR device = 'T'"
+---------+
| f0_ |
+---------+
| 8268436 |
+---------+
$ bq query "SELECT count(*) FROM t WHERE NOT (device = 'P' OR device = 'T')"
+-----+
| f0_ |
+-----+
| 0 |
+-----+
$ bq query "SELECT count(*) FROM t WHERE device IS NULL"
+----------+
| f0_ |
+----------+
| 21273627 |
+----------+
Почему запрос с WHERE NOT
возвращается 0
в то время как IS NULL
один возвращает правильный результат?