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
应该是WITH TIES吧?WITH TIES指定从基本结果集中返回额外的行,对于 ORDER BY 列中指定的排序方式参数,这些额外的返回行的该参数值与 TOP n (PERCENT) 行中的最后一行的该参数值相同。只能在 SELECT 语句中且只有在指定了 ORDER BY 子句之后,才能指定 TOP...WITH TIES。
注意:返回的记录关联顺序是任意的。ORDER BY 不影响此规则。
例如:
“从100万条记录中的得到成绩最高的记录”。通常用:
select top 1 * from student order by score desc
但是如果有几个人分数并列第一,这样就只能取到一个记录。用下面的代码的话,就可以正确地取出分数第一的所有记录:
select top 1 with ties * from student order by score desc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)