sql server 2012中的两个查询之间有什么区别
第一个问题:sql server 2012中的两个查询之间有什么区别,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,第一个问题: SELECT TOP (100) * FROM tblAppGain 第二个问题: SELECT TOP (100) percent * FROM tblAppGain TOP将查询结果集中返回的行限制为SQL Server 2017中指定的行数或行百分比。当TOP与ORDERBY子句一起使用时,结果集被限制为前N个有序行;否则,它将以未定义的顺序返回前N行 百分比 指示查询仅返回结果集中第一个表达式的行百分比。分数值向上舍入到下一个整数值 TOP(n),给定前n个符合条件
SELECT TOP (100) *
FROM tblAppGain
第二个问题:
SELECT TOP (100) percent *
FROM tblAppGain
TOP
将查询结果集中返回的行限制为SQL Server 2017中指定的行数或行百分比。当TOP与ORDERBY子句一起使用时,结果集被限制为前N个有序行;否则,它将以未定义的顺序返回前N行
百分比
指示查询仅返回结果集中第一个表达式的行百分比。分数值向上舍入到下一个整数值
TOP(n),给定前n个符合条件的行
如果通过[可选]百分比(如顶部(n)百分比),将返回匹配行的n%
就你而言
从tblAppGain中选择顶部(100)*
将从表中返回前100条记录(您尚未指定任何条件[where…],因此前100条记录将按输入顺序返回)
从tblAppGain中选择顶部(100%)百分比*
将返回表的100%行。这和
从tblAppGain中选择*
(我认为这是一个致命的疑问)
在询问之前先阅读,这是超级简单的谷歌搜索
是否尝试阅读文档?
因此前100条记录将按输入的顺序返回
。不,不会的。前100条记录将按照查询优化器选择的顺序返回。它们每次的顺序可能相同,也可能不同。表存储为无序集。只有当orderby
子句应用于SELECT
语句时,才能保证订单。对这个问题的回答不是特别相关,但在处理实时数据时非常相关。