Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL verschachtelte Select-Abfrage?

Sie müssen nur die erste Abfrage als Unterabfrage (abgeleitete Tabelle) schreiben, innerhalb von Klammern einen Alias ​​dafür auswählen (t unten) und aliasieren Sie auch die Spalten.

Der DISTINCT kann auch sicher als interner GROUP BY entfernt werden macht es überflüssig:

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 ;

Seit COUNT nun offensichtlich ist, dass nur Zeilen der abgeleiteten Tabelle gezählt werden, können Sie dies durch COUNT(*) ersetzen und die Abfrage weiter vereinfachen:

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 ;