Как переписать запрос без RIGHT JOIN, используя только LEFT JOIN? Исходный запрос: SELECT u.user_id, o.order_id FROM users u RIGHT JOIN orders o ON u.user_id = o.user_id;
A
SELECT u.user_id, o.order_id FROM users u LEFT JOIN orders o ON u.user_id = o.user_id;B
SELECT u.user_id, o.order_id FROM orders o LEFT JOIN users u ON u.user_id = o.user_id;C
SELECT u.user_id, o.order_id FROM users u FULL JOIN orders o ON u.user_id = o.user_id;D
SELECT u.user_id, o.order_id FROM users u UNION SELECT user_id, order_id FROM orders;Правильный ответ.
RIGHT JOIN эквивалентен LEFT JOIN, если поменять таблицы местами.Разбор
RIGHT JOIN сохраняет все строки из правой таблицы (orders). То же самое можно сделать через LEFT JOIN, если поставить orders слева: FROM orders o LEFT JOIN users u .... Такой стиль обычно читается проще и реже приводит к путанице в аналитических запросах.
Проверь себя · 1/3разбор после ответа
Первый набор содержит значения:
100, 100, 100, 200. Второй набор: 100, 300. Чем отличаются результаты EXCEPT и EXCEPT ALL?Ещё вопросы по теме «JOIN и операции множеств»
- В отчёте нужно вывести всех пользователей и количество их заказов, включая тех, у кого заказов нет. Какой тип соединения между `users` и `orders` по `user_id` нужен?
- Нужно посчитать число пользователей, которые сделали хотя бы 1 заказ (таблицы `users(user_id)` и `orders(user_id, order_id)`). Какой запрос посчитает правильно?
- Вы соединили `orders` с `order_items` и `payments` по `order_id`, а затем посчитали `SUM(paid_amount)`. Сумма оказалась завышенной. Что вероятнее всего произошло и как исправить?
- Есть две таблицы с одинаковой схемой: `events_web(user_id, event_name, created_at)` и `events_app(user_id, event_name, created_at)`. Нужно получить общий поток событий для дальнейшей агрегации. Что использовать?
- Нужно получить уникальный список `user_id`, которые пришли из двух каналов: `campaign_a(user_id)` и `campaign_b(user_id)`. Как корректнее объединить списки, чтобы убрать дубликаты?
- Все вопросы по «JOIN и операции множеств» →