¿Cuál es el error "Cada tabla derivada debe tener su propio alias" en MySQL?
mysql-error-1248 (3)
Aquí hay un ejemplo diferente que no se puede reescribir sin alias (no se puede GROUP BY DISTINCT
).
Imagine una tabla llamada purchases
que registra las compras realizadas por los customers
en las stores
, es decir, es una tabla de muchas a muchas y el software necesita saber qué clientes han realizado compras en más de una tienda:
SELECT DISTINCT customer_id, SUM(1)
FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
GROUP BY customer_id HAVING 1 < SUM(1);
... se romperá con el error Every derived table must have its own alias
. Arreglar:
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);
(Tenga en cuenta el alias AS custom
).
Estoy ejecutando esta consulta en MySQL
SELECT ID FROM (
SELECT ID, msisdn
FROM (
SELECT * FROM TT2
)
);
y está dando este error:
Cada tabla derivada debe tener su propio alias.
¿Qué está causando este error?
Cada tabla derivada (subconsulta AKA) debe tener un alias. Es decir, cada consulta entre paréntesis debe recibir un alias ( AS whatever
), que se puede usar para referirse a él en el resto de la consulta externa.
SELECT ID FROM (
SELECT ID, msisdn FROM (
SELECT * FROM TT2
) AS T
) AS T
En su caso, por supuesto, toda la consulta podría ser reemplazada por:
SELECT ID FROM TT2
Creo que te está pidiendo que hagas esto:
SELECT ID
FROM (SELECT ID,
msisdn
FROM (SELECT * FROM TT2) as myalias
) as anotheralias;
Pero, ¿por qué escribirías esta consulta en primer lugar?