возвращает какую-то виртуальную таблицу, из которой можно селектить как из обычной? почему такой селект нужно описывать отдельно, как CTE, а не использовать вложенный селект в самом запросе?
1. да 2. можно использовать несколько раз
Не нужно, а можно. для читаемости. Вложенный до 12 постгра даже лучше
Сложные запросы с CTE куда более читаемы (производительность — другой вопрос). Кроме ранее сказанного, CTE ещё даёт возможность писать рекурсивные запросы.
с cte фокус в том, что в них можно не только селектить, но и изменять данные. с подзапросами такое не прокатит
Обсуждают сегодня