Sql 如何从返回的记录集中选择最新记录?

Sql 如何从返回的记录集中选择最新记录?,sql,sql-server-2008,Sql,Sql Server 2008,我在SQLServer2008中有SQL表,我想得到最新的记录,这取决于它的日期 例如,假设我有一些记录,其中有一列和一个日期列,其中包含创建记录的日期。 日期列包含以下日期。12月22日、23日、24日、25日、26日至12月 现在,我想获取小于12月25日的记录,但是如果我写查询,我想要最新的日期记录 select * from Table where CreateDate < '25-Dec-2012' 从CreateDate

我在SQLServer2008中有SQL表,我想得到最新的记录,这取决于它的日期

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

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

select * from Table where CreateDate < '25-Dec-2012' 
从CreateDate<'25-Dec-2012'所在的表格中选择*
然后它将返回3条记录,但我想从中得到最新的记录,即12月24日的记录


怎么做

您应该将
TOP 1
添加到查询中,并按照与自然顺序相反的顺序对其排序,以便首先获取最后一条记录。假设默认顺序为按升序排列的按
CreateDate
,则按CreateDate DESC排序的
顺序应执行以下操作:

SELECT TOP 1 *
FROM Table
WHERE CreateDate < '25-Dec-2012' 
ORDER BY CreateDate DESC
选择前1名*
从桌子上
其中CreateDate<'2012年12月25日'
按CreateDate描述订购

您应该向查询中添加
TOP 1
,并按照与自然顺序相反的顺序对其排序,以便首先获取最后一条记录。假设默认顺序为按升序排列的按
CreateDate
,则按CreateDate DESC排序的
顺序应执行以下操作:

SELECT TOP 1 *
FROM Table
WHERE CreateDate < '25-Dec-2012' 
ORDER BY CreateDate DESC
选择前1名*
从桌子上
其中CreateDate<'2012年12月25日'
按CreateDate描述订购

您必须使用
订单
限额

select * from Table where CreateDate < '25-Dec-2012'  order by CreateDate DESC LIMIT 1
从表格中选择*,其中CreateDate<'25-Dec-2012'订单按CreateDate描述限制1

您必须使用
订单
限额

select * from Table where CreateDate < '25-Dec-2012'  order by CreateDate DESC LIMIT 1
从表格中选择*,其中CreateDate<'25-Dec-2012'订单按CreateDate描述限制1
请尝试:

select 
  top 1 * 
from Table 
  where CreateDate < '25-Dec-2012' 
order by CreateDate desc
选择
前1名*
从桌子上
其中CreateDate<'2012年12月25日'
按CreateDate描述订购
请尝试:

select 
  top 1 * 
from Table 
  where CreateDate < '25-Dec-2012' 
order by CreateDate desc
选择
前1名*
从桌子上
其中CreateDate<'2012年12月25日'
按CreateDate描述订购
使用
TOP

SELECT TOP 1 *
FROM TABLENAME
WHERE CreateDate < '25-Dec-2012'
ORDER BY CreateDate DESC
选择前1名*
从表名
其中CreateDate<'2012年12月25日'
按CreateDate描述订购
使用
TOP

SELECT TOP 1 *
FROM TABLENAME
WHERE CreateDate < '25-Dec-2012'
ORDER BY CreateDate DESC
选择前1名*
从表名
其中CreateDate<'2012年12月25日'
按CreateDate描述订购
u可以包括“顶部”作为

根据CreateDate描述,从CreateDate<'25-Dec-2012'订单所在的表格中选择前1*;
u可以包括“顶部”作为

根据CreateDate描述,从CreateDate<'25-Dec-2012'订单所在的表格中选择前1*;

OP说每个日期只有一行,因此2012年12月24日的行将是理想的行


从CreateDate='24-Dec-2012'的表格中选择*

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


从CreateDate='24-Dec-2012'的表格中选择*

使用此选项,可以正常工作,手动检查:)

选择前1个*
从表名
其中Createdate<'2012年12月25日'
按Createdate描述订购

使用此选项,可以正常工作,手动检查:)

选择前1个*
从表名
其中Createdate<'2012年12月25日'
按Createdate描述订购

Limit在SQL Server中无效Limit在SQL Server中无效
从ProductPrice中选择TOP 1*,其中ProductID=1601和PriceListCode=1,并从
这是正确的查询吗?请手动检查并确认结果,我认为此查询中没有任何问题。
从ProductPrice中选择TOP 1*,其中ProductID=1601和PriceListCode=1,并从<'25-Dec-2012'ORDER BY EffectiveFrom DESC中选择EffectiveFrom
这是正确的查询吗?请手动检查并确认您的结果,我认为此查询中没有任何问题。您好,上面查询中的一个问题是,如果我使用大于等于,则不会检索最新记录
从CreateDate@Nil所在的表中选择前1*这通常发生在
CreateDate
DateTime
对象时:
'25-Dec-2012'
是午夜;如果
CreateDate
有一个时间部分,那么它不会进行相等的比较。对于一个单独的问题来说,这可能是一个很好的主题。嗨,上面查询中的一个问题如果我使用大于等于,那么它将不会检索最新记录
从CreateDate@Nil所在的表中选择前1*这通常发生在
CreateDate
DateTime
对象时:
'25-Dec-2012'
是午夜;如果
CreateDate
有一个时间部分,那么它不会进行相等的比较。这可能是一个单独问题的好主题。