Вот другой пример, который нельзя переписать без псевдонимов (не могу GROUP BY DISTINCT
).
Представьте себе таблицу, в purchases
которой записываются покупки, сделанные в customers
at stores
, т.е. это таблица «многие ко многим», и программное обеспечение должно знать, какие клиенты совершали покупки в более чем одном магазине:
SELECT DISTINCT customer_id, SUM(1)
FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
GROUP BY customer_id HAVING 1 < SUM(1);
... сломается с ошибкой Every derived table must have its own alias
. Исправить:
SELECT DISTINCT customer_id, SUM(1)
FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) AS custom
GROUP BY customer_id HAVING 1 < SUM(1);
(Обратите внимание на AS custom
псевдоним).