Mysql
 sql >> Database >  >> RDS >> Mysql

Query di selezione nidificata MySQL?

Devi solo scrivere la prima query come sottoquery (tabella derivata), tra parentesi, scegliere un alias per essa (t sotto) e alias anche le colonne.

Il DISTINCT può anche essere rimosso in sicurezza come GROUP BY interno lo rende superfluo:

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 ;

Dal momento che il COUNT ora è ovvio che conta solo le righe della tabella derivata, puoi sostituirla con COUNT(*) e semplificare ulteriormente la query:

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 ;