我们有时需要返回特定数量的记录,而不管符合条件的行有多少。要返回排在前面的值,可以有两个选择:指定固定数量的行,或者指定总行数的百分比。例如以下查询将返回前10个价格最高的产品。
SELECT TOP 10 Name,ListPrice FROM Production.Product ORDER BY ListPrice DESC
SQL Server不对这些数据做任何分析,甚至在截断列表时,也不会考虑这些值是不是已经排过序,上述查询将在返回第10行后截断结果,而不管后面还有多少条记录的ListPrice与第10行的ListPrice相同,如果想把与第10行相同价格的行也包含进来,可以使用一下查询:
SELECT TOP 10 WITH TIES Name,ListPrice FROM Production.Product ORDER BY ListPrice DESC
上面的这条查询将会返回13行,原因在于第11、12、13行中的ListPrice值都与第10行相同。
下面的查询是使用百分比来返回结果集:
SELECT TOP 10 PERCENT WITH TIES Name,ListPrice FROM Production.Product ORDER BY ListPrice DESC