SELECT TOP的对面?

时间:2012-05-17 11:28:07

标签: sql sql-server

我希望这是一个简单的问题。我已经搜索过但无法找到一个好的工作示例。

Transact SQL有一个方便的SELECT TOP 4 [whatever] FROM.........

我只是想从表中选择最后4个条目,不要太多问它是不是真的?!!

你会认为M $现在已经覆盖了这个!!

sql = "SELECT TOP 4 [news_title], [news_date_added], [news_short_description], 
[news_ID] FROM [Web_Xtr_News] WHERE ([news_type] = 2 OR [news_type] = 3) AND 
[news_language] = '" + Language + "' ORDER BY [news_ID] ASC"

这将选择在表格中输入的第一个4项,我需要最后4个。

4 个答案:

答案 0 :(得分:29)

将表格的顺序从ASC更改为DESC

答案 1 :(得分:17)

正是这样:http://www.sqlfiddle.com/#!3/6c813/1

with bottom as(  
  select top 4 *
  from tbl
  order by n desc
)
select * 
from bottom
order by n

数据来源:

|  N |
|----|
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |

输出:

|  N |
|----|
|  7 |
|  8 |
|  9 |
| 10 |

答案 2 :(得分:5)

为什么不继续使用TOP,并颠倒顺序?

sql = "SELECT TOP 4 [news_title], [news_date_added], [news_short_description], 
[news_ID] FROM [Web_Xtr_News] WHERE ([news_type] = 2 OR [news_type] = 3) AND 
[news_language] = '" + Language + "' ORDER BY [news_ID] DESC"

重写当然使用参数,你的原始文件很容易被SQL注入。

答案 3 :(得分:0)

您可以在查询结束时使用DESC代替ASC来反转排序。