这个查询是如何工作的

时间:2014-05-11 17:09:08

标签: sql-server

select top 1 sal from(SELECT DISTINCT TOP 6 sal
FROM salary
ORDER BY sal desc) a order by sal

我是sql server的新手可以任何一个请告诉我这个查询是如何找到第六高的 表工资的工资,我可以理解内部查询是找到前6名工资并按降序排列,但我无法理解的是,前1名应该从按工序降序排列的6个工资中给出最高薪水它如何返回最后(底部)薪水

2 个答案:

答案 0 :(得分:1)

检查结尾处的order by,默认情况下会提升,这意味着从最高6位工资中获得最低工资。

当我们从子查询中选择时,SQL Server需要

a。这没有任何意义。

A'聪明的'查询是

SELECT sal
FROM salary
ORDER BY sal
OFFSET 5 ROWS FETCH 1 ROW ONLY;

答案 1 :(得分:1)

你怎么知道内部查询按降序返回前6名工资?

ORDER BY sal desc

DESC关键字将按降序排列....默认情况下,它按升序排序。外部查询的ORDER BY不是ORDER BY DESC

因此,它返回内部查询返回的前6名工资中的最低工资。