TOP(expression) [PERCENT] [WITH TIES]
expression : 指定返回行数的数值表达式。如果指定了PERCENT,则expression默认转换为FLOAT值,否则,他默认为bigint值。
PERCENT:返回结果中前expression的百分比的行。
with ties :指定从基本结果集中返回额外的行,对于order by 列中指定的排序方式参数,这些额外返回行的该参数值与top n 中最后一行的该参数值相同。智能在select 语句中且只有在指定order by 自居之后,才能指定top 。。。with ties
注意:
在insert,update,delete语句中,top后面的expression需要用()括起来。
如果查询包含 order by子句,则将返回按order by子句排序的前expression行。如果查询没有order by,则行的顺序是随意的。
如下数据库数据:执行一条sql语句:
insert top(1)into TB_Teacher (Name) select Name from TB_Teacher order by Name
结果会插入选择前1000行的时候,第一条数据。而不会选择ordery by name之后的top(1)
order by name 应该第一条是小花。
但是结果如下:插入的是小明,也就是我们在表右键选择前1000行时候默认的第一条数据。
该子句不影响由insert 语句直接引用的行。insert语句会选择任意的一行。若要确保插入select子查询返回的前两行,应该如下语句:
insert into TB_Teacher (Name) select top(1) Name from TB_Teacher order by Name
插入的就是 小花。
使用 with ties:
查询出前20%工资最高的员工,并且按照降序排列。指定with ties 可以确保结果中同时包含其工资 与 返回的最低工资相同的员工
如果去掉 with ties 再看看查询结果: