Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql,选择最小表达式的源值,而不是最小值_Mysql_Sql - Fatal编程技术网

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'))