Что такое оператор WITH в БД
Python
Middle
Без компании
Что такое оператор WITH в БД
Ответы
Оператор `WITH` (Common Table Expression, CTE) позволяет создавать временные результаты запроса, которые можно использовать в основном запросе. Он улучшает читаемость и поддерживает рекурсивные запросы.
Пример:
```
WITH sales_summary AS (
SELECT product_id, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product_id
)
SELECT p.name, s.total_quantity
FROM products p
JOIN sales_summary s ON p.id = s.product_id;
```
Особенности:
- CTE существует только во время выполнения запроса
- Может быть рекурсивным (с `WITH RECURSIVE`)
- Упрощает сложные запросы, разбивая их на части
- Альтернатива подзапросам и временным таблицам
Рекурсивный пример:
```
WITH RECURSIVE hierarchy AS (
SELECT id, name, parent_id FROM employees WHERE id = 1
UNION ALL
SELECT e.id, e.name, e.parent_id
FROM employees e
JOIN hierarchy h ON e.parent_id = h.id
)
SELECT * FROM hierarchy;
```