SQL Server 2012中两个查询之间的区别是什么

时间:2018-12-05 07:53:16

标签: sql sql-server sql-server-2012

第一个查询:

SELECT TOP (100) * 
FROM tblAppGain

第二个查询:

SELECT TOP (100) percent * 
FROM tblAppGain

2 个答案:

答案 0 :(得分:1)

TOP将查询结果集中返回的行限制为SQL Server 2017中指定的行数或行的百分比。当TOP与ORDER BY子句结合使用时,结果集限于前N个有序行;否则,它将以不确定的顺序返回前N个行

PERCENT 指示查询仅返回结果集中行的第一个表达式百分比。分数值将四舍五入为下一个整数值。

see Docs

答案 1 :(得分:1)

TOP(n),给您前n个符合条件的匹配行

如果您传递[TOP(n)percent之类的[可选]百分比,则将返回n%的匹配行。

就您而言

  

从tblAppGain选择顶部(100)*

将从表中返回前100条记录(您未在[where ...]中指定任何条件,因此前100条记录将按输入顺序返回)

  

SELECT TOP(100)percent * FROM tblAppGain

将返回表的100%行。这和

  

SELECT * FROM tblAppGain;

(我认为这是一个致命的查询)

在询问之前尝试阅读,那是超级简单的Google搜索

https://docs.microsoft.com/en-us/sql/t-sql/queries/top-transact-sql?view=sql-server-2017