对面顶部

问题描述:

我正在与SQL服务器2005.对面顶部

我有一个视图根据订单日期对其列进行排序。我致电:

SELECT TOP 1 [OrderDate] 
FROM [ordersview] 

以获得最新的时间。我如何获得最早的时间?

+0

视图是一组行,并没有任何默认的'ORDER'。如果需要,您需要在从视图中选择时指定所需的任何“ORDER BY”。 (注意:SQL Server 2000确实允许Ordered Views为[在此讨论](http://blogs.msdn.com/b/queryoptteam/archive/2006/03/24/560396.aspx)) – 2012-02-22 18:50:46

+0

奇怪。我在2005 DB的2008 Management Studio中使用Designer来创建视图,并让我指定列的排序。这是为什么? – Baz 2012-02-22 19:00:07

+0

如果视图定义还包含“TOP”,它只允许使用'ORDER BY'。然后'ORDER BY'指的是'TOP'规范而不是演示顺序。在SQL Server 2000中,它确实将两者混为一谈,但这不是正确的语义,并且不再需要启用特定的向后兼容性跟踪标志。 – 2012-02-22 19:06:11

SELECT TOP 1 OrderDate FROM ordersview ORDER BY OrderDate DESC 

使用降序排列:

select top 1 OrderDate from ordersview order by OrderDate desc 

另外:

SELECT MIN(OrderDate) FROM ordersview 

我认为, 这是有点棘手的问题。

每个人都会说白色是黑色的。 首先它是最后一个。

但是,当你没有指定初始订单 什么是真正的第一个。

我认为这是内部/供应商特定的事情。

所以这两个答案都是对的,但实际上并没有真正回答你的问题。

我不是真的mssql人,但认为你的选择将返回随机 行(也许取决于插入序列,或像rowId相同的内部数据库的东西)。

什么是相反的随机?

一件事是,排序是相当苛刻(资源/性能)功能, 这样的事情ü应该对列索引。

基本上,当你在做选择像你应该关于实际分页 不仅一个项目。

但随后的结果将有不同的顺序,然后原来的(所以......)

+0

引用:“根据订单对列排序的视图”。所以他会用他的sql获得最低的日期。 – 2012-02-22 21:09:14