sql >> Base de Datos >  >> RDS >> Mysql

¿Consulta de selección anidada de MySQL?

Solo necesita escribir la primera consulta como una subconsulta (tabla derivada), entre paréntesis, elija un alias para ella (t a continuación) y alias las columnas también.

El DISTINCT también se puede eliminar de forma segura como el GROUP BY interno lo hace redundante:

SELECT DATE(`date`) AS `date` , COUNT(`player_name`) AS `player_count`
FROM (
    SELECT MIN(`date`) AS `date`, `player_name`
    FROM `player_playtime`
    GROUP BY `player_name`
) AS t
GROUP BY DATE( `date`) DESC LIMIT 60 ;

Desde el COUNT ahora es obvio que solo cuenta filas de la tabla derivada, puede reemplazarlo con COUNT(*) y simplificar aún más la consulta:

SELECT t.date , COUNT(*) AS player_count
FROM (
    SELECT DATE(MIN(`date`)) AS date
    FROM player_playtime
    GROUP BY player_name
) AS t
GROUP BY t.date DESC LIMIT 60 ;