Внутренний запрос на присоединение с МАКС. Датой, все еще возвращающей несколько значений для даты - PullRequest
2 голосов
/ 19 марта 2019

У меня есть запрос, который должен получить не более одной записи в день для указанного идентификатора. Запрос возвращает несколько значений в день, несмотря на указание максимального значения. Мне нужна помощь в настройке, чтобы я получал только одну запись в день. На рисунке показан фрагмент возвращаемых данных. enter image description here

    SELECT a.* 
    FROM turtle_derby AS a 
    INNER JOIN (SELECT turtle_id, DATE(`date`) AS day_date, MAX(`date`) AS maxdate 
    FROM turtle_derby 
    GROUP BY turtle_id, day_date) AS groupedtt 
    ON a.turtle_id = groupedtt.turtle_id 
    AND a.turtle_id = '175846' 
    AND a.`date` = groupedtt.maxdate 
    AND a.`date` > '2018-07-26' 
    ORDER BY `a`.`date`

1 Ответ

0 голосов
/ 19 марта 2019

Ваши данные имеют несколько строк в одно и то же время суток.Если это время в последний день, вы получите их все.Вам нужно получить максимум две колонки, date и loc_id.См. SQL: Использование GROUP BY и MAX для нескольких столбцов

SELECT a.* 
FROM turtle_derby AS a 
INNER JOIN (
    SELECT t2.turtle_id, MAX(t2.loc_id) AS max_id
    FROM (
        SELECT turtle_id, MAX(date) AS maxdate
        FROM turtle_derby AS
        GROUP BY turtle_id, DATE(date)
    ) AS t1
    INNER JOIN turtle_derby AS t2
    ON t1.turtle_id = t2.turtle_id AND t1.maxdate = t2.date
    GROUP BY t1.turtle_id, t1.maxdate
) AS groupedtt 
ON a.turtle_id = groupedtt.turtle_id 
AND a.loc_id = groupedtt.maxloc
WHERE a.turtle_id = '175846' 
AND a.`date` > '2018-07-26' 
ORDER BY `a`.`date`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...