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