Мой запрос имеет NOT IN, и вдруг перестали показывать результаты - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть запрос, который запускается каждый день, и вдруг он перестал выводить результаты.Он не выдает ошибку, просто нет результатов.

Обратите внимание, что этот запрос включает оператор NOT IN.

1 Ответ

0 голосов
/ 14 ноября 2018

Это известная проблема поведения NOT IN, посмотрите его версию MySQL:

С BigQuery:

WITH data AS (
  SELECT * FROM UNNEST([1,2,3]) x
), data2 AS (
  SELECT * FROM UNNEST([1,2]) x
)

SELECT * FROM data
WHERE x NOT IN (SELECT * FROM data2)

3

Но тогда, если у вас есть ноль в data2:

WITH data AS (
  SELECT * FROM UNNEST([1,2,3]) x
), data2 AS (
  SELECT * FROM UNNEST([1,2,null]) x
)

SELECT * FROM data
WHERE x NOT IN (SELECT * FROM data2)

# no results

Вместо этого вы можете сделать LEFT JOIN или NOT EXISTS:

WITH data AS (
  SELECT * FROM UNNEST([1,2,3]) x
), data2 AS (
  SELECT * FROM UNNEST([1,2]) x
)

SELECT * FROM data a
WHERE NOT EXISTS (SELECT * FROM data2 b WHERE a.x=b.x)

3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...