У меня есть запрос, который говорит
select u, min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00'))) from ... group by u
, но я не хочу минимума, я хочу значение d, которое является входом, который дает минимальное значение.
Это вmysql 5.7
Group by u, чтобы получить все минимумы и присоединиться к столу:
Group by u
select t.u, t.d from tablename t inner join ( select u, min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00'))) minimumd from tablename group by u ) g on g.u = t.u and g.minimumd = abs(TIMESTAMPDIFF(SECOND, t.d, '2018-12-07 23:00:00'))
Самый простой способ может быть row_number():
row_number()
select x.* from (select . . ., row_number() over (partition by u order by min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00'))) ) as seqnum from ... group by u ) x where seqnum = 1;