Aqui está um exemplo diferente que não pode ser reescrito sem apelidos (não pode GROUP BY DISTINCT
).
Imagine uma tabela chamada purchases
que registra as compras feitas em customers
at stores
, ou seja, é uma tabela de muitos para muitos e o software precisa saber quais clientes fizeram compras em mais de uma loja:
SELECT DISTINCT customer_id, SUM(1)
FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
GROUP BY customer_id HAVING 1 < SUM(1);
..vai quebrar com o erro Every derived table must have its own alias
. Consertar:
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);
(Observe o AS custom
alias).