1

我在 SQL Server 2008 中有 SQL 表,我想获取取决于其日期的最新记录。

例如,假设我有一些列和一个包含记录创建日期的日期列的记录。让我们坐在日期列包含以下日期。12 月 22 日、12 月 23 日、12 月 24 日、12 月 25 日、12 月 26 日。

现在,我想获取小于 12 月 25 日的记录,但我想要最新的日期记录,如果我写查询

select * from Table where CreateDate < '25-Dec-2012' 

然后它将返回 3 条记录,但我想要他们的最新记录,即 12 月 24 日的记录

怎么做 ?

4

7 回答 7

1

您应该添加TOP 1到您的查询中,并按照其自然顺序的相反顺序对其进行排序,以首先获取您的最后一条记录。假设默认顺序是按CreateDate升序排列,ORDER BY CreateDate DESC应该可以解决问题:

SELECT TOP 1 *
FROM Table
WHERE CreateDate < '25-Dec-2012' 
ORDER BY CreateDate DESC
于 2012-12-26T05:27:17.537 回答
1

使用这个,可以正常工作,手动检查..:)

select top 1 * 
from TableName 
where Createdate < '25-Dec-2012' 
order by Createdate desc
于 2012-12-26T06:26:59.013 回答
0

请试试:

select 
  top 1 * 
from Table 
  where CreateDate < '25-Dec-2012' 
order by CreateDate desc
于 2012-12-26T05:27:44.810 回答
0

采用TOP

SELECT TOP 1 *
FROM TABLENAME
WHERE CreateDate < '25-Dec-2012'
ORDER BY CreateDate DESC
于 2012-12-26T05:28:21.610 回答
0

你可以包括“顶部”作为..

    select top 1 * from Table where CreateDate < '25-Dec-2012' order by CreateDate desc;
于 2012-12-26T05:28:22.903 回答
0

OP 说每个日期只有一行,因此 24-Dec-2012 的行将是所需的行。

select * from Table where CreateDate = '24-Dec-2012'

于 2012-12-26T05:30:46.543 回答
-1

你必须使用orderlimit

select * from Table where CreateDate < '25-Dec-2012'  order by CreateDate DESC LIMIT 1
于 2012-12-26T05:27:36.323 回答