Я выполняю следующий запрос, и мне нужны только результаты первого левого соединения, которое возвращает результаты для адресов (add1 / 2/3). Возможно ли это, или мне просто нужно вернуть все и отправить результаты позже?
select
-- if add1 has no results
-- select add2
-- if add2 has no results
-- select add3
from names n, matter_counsel mc, counsel c
left join(
FLUFF
) as add1 on X
left join(
FLUFF
) as add2 on Y
left join(
FLUFF
) as add3 on Z
where FLUFF
Например, если add1 возвращает 1 адрес, add2 возвращает 1 адрес, а add3 возвращает 3 адреса, мне нужен только набор результатов из add1.
Coalesce дал бы мне неверные результаты с записью 1 из add1 и двумя другими результатами из add3.


Да, это возможно. И очень редко лучший выбор для фильтрации результатов после запроса, если только вы не ненавидите себя (или ваш набор данных очень сильно маленький).
При этом, основываясь на информации, с которой мы должны работать, я бы, вероятно, посоветовал вам попробовать подзапрос для достижения желаемых результатов. Однако без дополнительной информации может быть невозможно точно ответить, какие изменения могут вам потребоваться. Поскольку точно сказать, каких конечных результатов вы добиваетесь, довольно сложно.
Как упоминалось @jarlh, вы можете прочитать «Как создать минимальный, полный и проверяемый пример» и опубликовать несколько примеров данных или явно указать, что вам нужно.
Я думаю, вам нужна функция объединения.
Выберите coalesce (add1.val, add2.val, add3.val) из имен n, material_counsel mc, advice c левое соединение ( FLUFF ) как add1 на X левое соединение ( FLUFF ) как add2 на Y левое соединение ( FLUFF ) как add3 на Z
Проблема, с которой я столкнулся с coalesce, заключается в том, что, скажем, add1 возвращает 2 записи, а add2 возвращает 3, первые две из add1 и третье из add2
Вы можете вставить выражение в
ON, которое возвращает false, если вы не хотите, чтобы соединение произошло. Но в результате у вас все равно будут соединенные столбцы. Я не понял, является ли последнее (тоже) проблемой для вас.