Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta de seleção aninhada do MySQL?


Você só precisa escrever a primeira consulta como uma subconsulta (tabela derivada), entre parênteses, escolha um alias para ela (t abaixo) e alias as colunas também.

O DISTINCT também pode ser removido com segurança como o GROUP BY interno torna 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 ;

Como o COUNT agora é óbvio que está apenas contando linhas da tabela derivada, você pode substituí-lo por COUNT(*) e simplifique ainda mais a 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 ;