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