0

我想获得最大日期的一行。我不能使用 group by,因为我需要检索该行中的所有数据。

我有这个:

ID     Date          Country
1      05/05/2019    US
2      05/06/2019    UK

我想得到这个:

ID     Date          Country
2      05/06/2019    UK

我已经尝试了以下方法,但它对我不起作用

select TOP 1 ID, Date, country
from table
order by Date desc
4

5 回答 5

1

我不相信你。 是一个 db<>fiddle,它显示了示例数据中日期的三种不同解释:

  • 作为字符串
  • 为 mm/dd/yyyy
  • 如 dd/mm/yyyy

他们三个都产生相同的结果。

我怀疑您的实际数据更复杂,并且您过度简化了该问题的示例。此外,我怀疑 date 列存储为string而不是date

作为字符串,您可能有一些影响排序的隐藏字符(例如前导空格)。

如果是这种情况,请修复数据类型,您的代码将正常工作。

于 2019-06-05T11:41:23.840 回答
0

你能试试这个吗?

select Top 1 ID,Date, country from table where date = max(date)
于 2019-06-05T11:45:43.127 回答
0

这取决于您使用的数据库系统。

在 Microsoft SQL Server 中,您可以使用 row_number() 函数:

选择前 1 *
从事实出发
按 ROW_NUMBER() 排序(按 dateKey 排序)
于 2019-06-05T11:48:11.617 回答
0
SELECT ID,Date,Country from TableName Where Date = MAX(Date) AND Rownum <= 1 
于 2019-10-03T10:55:41.627 回答
0

首先DATE or DATETIME 在列中设置数据类型,[Date]然后尝试以下代码:

SELECT TOP 1 ID, [Date] , country FROM TableName ORDER BY Date DESC
于 2019-06-05T12:12:21.467 回答