Sql Server TOP - 用过吗?

Let*_*per 5 sql sql-server database-performance

SQL Server中是否有关键字或元信息会告诉您TOP是否生效?

EX:
Select TOP 5 * From Stuff

RESULT: 5 rows
Run Code Online (Sandbox Code Playgroud)

确定是否有6个或更多的最佳方法是什么?

I could do:
SELECT TOP 6 count(*) FROM Stuff
Run Code Online (Sandbox Code Playgroud)

但我担心单独调用检索计数,因为实际查询比这个和大型表复杂得多.

谢谢!

Mar*_*ith 12

您无法自动使用.你可以沿着这些方向使用某些东西

DECLARE @N INT = 5;

WITH T
     AS (SELECT TOP (@N + 1) *
         FROM   master..spt_values
         ORDER  BY number)
SELECT TOP (@N) *,
             CASE
               WHEN Count(*) OVER () = (@N + 1) THEN 1
               ELSE 0
             END AS MoreRecords
FROM   T
ORDER  BY number 
Run Code Online (Sandbox Code Playgroud)

  • @AaronBertrand不,因为他的`WITH`只选了6行. (3认同)

Car*_*ter 7

好吧,你可以选择前N + 1(你的例子中的N是5,所以在你的例子中选择前6)并丢弃客户代码中的最后一个,并使用第六个元素的存在来确定是否TOP如果您首先使用N,那会产生什么影响.但是,我不确定这样做有多大价值.

  • +1这是[太空笔]中的一支铅笔(http://en.wikipedia.org/wiki/Space_Pen). (5认同)