SQL, изменяющий левые значения соединения NULL
Можно ли выполнить полное соединение и изменить значения NULL, которые "заливаются" на что-то другое (например, изменить все эти значения NULL на 1)? Цель состоит в том, чтобы иметь возможность различать значения NULL, возвращаемые из базовой таблицы, и значения NULL, возвращаемые из внешнего соединения.
Спасибо
2 ответа
Скажи у тебя
A FULL OUTER JOIN B ON A.FK = B.ID
Если идентификатор B равен нулю, вы знаете, что строка пуста из-за внешнего соединения. Если идентификатор B не является нулевым, все нулевые значения в B являются фактическими значениями.
По симметрии то же самое верно от B до A.
Просто держите ключи (A.FK и B.ID) в SELECT, и у вас будет то, что вам нужно, чтобы различить эти два случая. В противном случае взгляните на COALESCE(), это то, что вы просите, но это не то, что вам нужно.
Может быть, это будет работать. Вы сравниваете колонку, к которой вы присоединились. Проверьте, является ли одна таблица нулевой, а другая нет. Если так, то это произошло от объединения. Я уверен, что есть сценарии, которые я пропускаю, но это работает в этом небольшом примере.