Asp.net SQL按postID选择最新发布

Asp.net SQL按postID选择最新发布,asp.net,sql,sql-server,select,Asp.net,Sql,Sql Server,Select,我想在最新消息发布时显示在页脚中。 上周六,2011年7月23日下午3:02 我正在使用ASP.NET4.0、Visual Studio和MSSQL Server Management Studio Sql表 posted |后处理 19 | 2011年7月23日星期六下午01:02 20 | 2011年7月23日星期六下午2:02 21 | 2011年7月23日星期六下午3:02 postID为Int,设置为主键,并自动递增。 后创建的是Varchar 到目前为止我都试过了 从“表”中选择最大

我想在最新消息发布时显示在页脚中。 上周六,2011年7月23日下午3:02

我正在使用ASP.NET4.0、Visual Studio和MSSQL Server Management Studio

Sql表

posted |后处理

19 | 2011年7月23日星期六下午01:02

20 | 2011年7月23日星期六下午2:02

21 | 2011年7月23日星期六下午3:02

postID为Int,设置为主键,并自动递增。 后创建的是Varchar

到目前为止我都试过了

从“表”中选择最大值(postID)

这显示了最近发布的ID,但我想扩展它以获取与该ID关联的最新后创建ID

任何帮助都将不胜感激

干杯

尝试以下sql查询:

 SELECT * FROM Table WHERE postID = (SELECT max(postID) from Table)

按postID DESC从表顺序中选择TOP 1*,SQL Server不支持此限制。改用陀螺。@Rick Liddle很高兴知道!谢谢。这里不需要子查询。只需选择最上面一行,按日期降序即可。@ShadowChaser ORDER by比子查询慢
SELECT max(postID)from Table
几乎是即时的,并且不需要硬盘访问,因为postID(我假设)是一个索引。这是正确的,但一般来说,发布日期无论如何都应该被索引。但是,如果我们假设不是这样,那么子查询仍然没有获得任何性能优势。两个查询的SQL Server执行计划完全相同—选择、顶部、聚集索引扫描。实际上,SQL Server优化器会在内部将子查询版本更改为TOP/ORDER。子查询可读性较差,没有任何好处。这是最有效的。它利用主键。但这取决于记录是否按顺序过帐。或者更狭义地说,表中的最后一条记录是最近的帖子。
select top 1 * from Table t order by t.postID desc
  Select tn.postCreated
    From table_name tn
   Where tn.postId = 
          (Select Max(postId)
             From table_name);