Подтвердить что ты не робот

MySQL Nested Select Query?

Итак, у меня есть следующий запрос:

SELECT MIN(`date`), `player_name`
FROM `player_playtime`
GROUP BY `player_name`

Затем мне нужно использовать этот результат в следующем запросе:

SELECT DATE(`date`) , COUNT(DISTINCT  `player_name`)
FROM  `player_playtime /*Use previous query result here*/`
GROUP BY DATE( `date`) DESC LIMIT 60

Как мне это сделать?

4b9b3361

Ответ 1

Вам просто нужно написать первый запрос в качестве подзапроса (производная таблица), внутри круглых скобок, выбрать псевдоним для него (t ниже) и псевдоним столбцов.

DISTINCT также можно безопасно удалить, поскольку внутренний GROUP BY делает его избыточным:

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 ;

Так как теперь COUNT очевидно, что это только подсчет строк производной таблицы, вы можете заменить его на COUNT(*) и еще больше упростить запрос:

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 ;