если есть находится подзапрос, то логика была одна, а если нет - другая?
SELECT t.name FROM table t
LEFT JOIN table AS table1 тут джоинится таблица, в которой если есть строка - то логика одна, если нет - другая ON какое-то условие
LEFT JOIN table AS table2 таблица для логики 1 ON table1.id IS NOT NULL ...
LEFT JOIN table AS table3 таблица для логики 2 ON table2.id IS NULL
WHERE t.id = table2 OR t.id = table3
Это как бы решение задачи, но лишь то, что в голову пришло, такие LEFT JOIN крайне неэффективны, так как сам join никак не фильтруется по строкам из таблицы FROM
Сначала CASE WHEN пробовал, но оно никак не подходит, COALESCE тоже, думаю, может CTE поможет?
Вообще странный запрос от слова очень, где таблица джойнится сама на себя по условию. Можете в left join ... on a.id = b.id and (условие соединения)
Обсуждают сегодня