Получение не равных записей, где есть NULL-записи - PullRequest
0 голосов
/ 13 декабря 2018

Допустим, у нас есть 2 таблицы:

table0: |кола |colB |

таблица1: |кола |colB |

Мне бы хотелось, чтобы записи colA были разными в разных таблицах, где colB между таблицами одинаковые.Это запрос, который я использую:

SELECT table0.colA FROM table0, table1 WHERE table0.colB = table1.colB AND (table0.colA) <> (table1.colA)

Кажется, это работает.Но что, если у меня есть нулевые значения для colA в обеих таблицах?

  • Если запись в столбце colA для одной таблицы пуста и не для другой, я хотел бы рассмотреть это как разницу.

  • если обе записи в столбце colA для обеих таблиц равны нулю, я хотел бы рассмотреть это как разницу.

Как мне проверить это?Я пытался использовать функцию ISNULL, но она не работала должным образом, когда обе записи нулевые.

1 Ответ

0 голосов
/ 14 декабря 2018

Этот запрос не будет выбирать какие-либо строки, когда либо table0.colA равен нулю, либо table1.colA равен нулю.(Я больше не помню объяснение; со временем оно стало «фактом»).Вы можете увидеть это с помощью SELECT, например

SELECT table0.colA, table1.colA,
CASE when table0.colA <> table1.colA then "true" else "false" END result

. Вам нужно будет использовать условное ИЛИ, что-то вроде

WHERE table0.colB = table1.colB 
AND (table0.colA <> table1.colA OR table0.colA is null OR table1.colA is null)

Значения () важны, чтобы не было первого предложения WHERE.быть "проигнорированным".Я не знаком с функцией ISNULL в SQLite3.

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