mysql,选择最小表达式的源值,而不是最小值
我有一个疑问是mysql,选择最小表达式的源值,而不是最小值,mysql,sql,Mysql,Sql,我有一个疑问是 select u, min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00'))) from ... group by u 但是我不想要最小值,我想要的是d值,它是产生最小值的输入 这是在mysql 5.7中,最简单的方法可能是行数: 按u分组以获得所有最小值并加入表格: select t.u, t.d from tablename t inner join ( select u, min(abs(TIMESTAMPDIF
select u, min(abs(TIMESTAMPDIFF(SECOND, d, '2018-12-07 23:00:00')))
from ...
group by u
但是我不想要最小值,我想要的是d值,它是产生最小值的输入
这是在mysql 5.7中,最简单的方法可能是行数:
按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'))
看来mysql 5不支持,应该已经指定了版本。是的,行号为version+8Show us db schema,示例数据,当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。如果您使用小时作为单位,请尝试在@草莓中创建一个样本,然后使用时间戳diffhour、'2019-02-01 00:00:00'、'2019-02-01 00:00:01';将返回0,但如果使用秒,它将返回1。所以使用什么单位是很重要的。这是非常正确的-我假设OP实际上想要时间戳之间的最小绝对差,但实际上问题中没有任何东西可以证实这个假设
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'))