Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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
当比较值由两个单独的字段组合时,可以使用单个SQL获取表中的最小(最大)行?_Sql_Mysql_Sql Server - Fatal编程技术网

当比较值由两个单独的字段组合时,可以使用单个SQL获取表中的最小(最大)行?

当比较值由两个单独的字段组合时,可以使用单个SQL获取表中的最小(最大)行?,sql,mysql,sql-server,Sql,Mysql,Sql Server,检查以下场景。有一个包含两列的表-DateWithoutMilliconds和Milliconds。这两列一起定义了精确的时间戳和毫秒 是否可以编写一条SQL语句(不使用存储过程),以毫秒精度获取具有最小时间戳的行?实际上,时间戳已经足够好了,但它必须是毫秒,因为几行可能具有相同的datewithoutmillizes值,但毫秒不同 现在,我完全明白了在数据库中存储总毫秒数的想法,而不是前面提到的两列。然而,我必须确保我没有遗漏任何东西,如果有一个SQL允许有两个列,并且仍然能够获取精确的最小值

检查以下场景。有一个包含两列的表-DateWithoutMilliconds和Milliconds。这两列一起定义了精确的时间戳和毫秒

是否可以编写一条SQL语句(不使用存储过程),以毫秒精度获取具有最小时间戳的行?实际上,时间戳已经足够好了,但它必须是毫秒,因为几行可能具有相同的datewithoutmillizes值,但毫秒不同

现在,我完全明白了在数据库中存储总毫秒数的想法,而不是前面提到的两列。然而,我必须确保我没有遗漏任何东西,如果有一个SQL允许有两个列,并且仍然能够获取精确的最小值,我想知道它

提前感谢所有的好心人

编辑


我们同时使用SqlServer和MySql。

对于不同的数据库,它可能看起来不同,但在SqlServer中,您应该能够执行以下操作:

SELECT TOP 1 
    Field1, Field2, 
    dateadd(ms, MillisecondsField, DateWithoutMillisecondsField) TimeStamp
FROM Table
ORDER BY TimeStamp DESC
SELECT TOP 1
       field1
     , field2
  FROM table
 ORDER BY DateWithoutMilliseconds ASC
     , Milliseconds ASC;

在SQL Server中,不需要在SELECT子句中指定时间字段。你可以这样写:

SELECT TOP 1 
    Field1, Field2, 
    dateadd(ms, MillisecondsField, DateWithoutMillisecondsField) TimeStamp
FROM Table
ORDER BY TimeStamp DESC
SELECT TOP 1
       field1
     , field2
  FROM table
 ORDER BY DateWithoutMilliseconds ASC
     , Milliseconds ASC;

我假设当你说你想要最小的时间戳时,你想要最早的日期。如果您想要最新的日期,请在ORDER BY子句中将ASC替换为DESC。

用[sql]您的意思是[sql server]吗?实际上,使用MySql时出现了毫秒问题。谢谢,效果很好,只是我将min函数应用于dateadd结果。