mysql, выберите исходное значение минимального выражения вместо минимального значения - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть запрос, который говорит

select u, min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00')))
from ...
group by u

, но я не хочу минимума, я хочу значение d, которое является входом, который дает минимальное значение.

Это вmysql 5.7

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

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'))
0 голосов
/ 24 февраля 2019

Самый простой способ может быть 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...