SELECT TOP的对面?

Bar*_*ght 9 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"
Run Code Online (Sandbox Code Playgroud)

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

Ode*_*ded 30

将表的顺序更改ASCDESC.

  • @BaronVonPeterWright - 你有没有尝试过?`WHERE`"在`TOP`之前执行". (15认同)

Mic*_*uen 18

正是这样: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
Run Code Online (Sandbox Code Playgroud)

数据源:

|  N |
|----|
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
|  7 |
|  8 |
|  9 |
| 10 |
Run Code Online (Sandbox Code Playgroud)

输出:

|  N |
|----|
|  7 |
|  8 |
|  9 |
| 10 |
Run Code Online (Sandbox Code Playgroud)


Bri*_*dge 6

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

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
Run Code Online (Sandbox Code Playgroud)

当然重写为使用参数,原来很容易受到SQL注入.