前N个查询 - SQL Server 2008

时间:2011-04-03 21:17:27

标签: sql sql-server

如何从SQL Server返回前N个查询。我知道它是如何在Oracle中完成的

SELECT Empno, Ename, Job, Mgr, Hiredate, Sal FROM (SELECT Empno, Ename, Job, Mgr, Hiredate, Sal FROM Emp ORDER BY NVL(Sal, 0) DESC) WHERE ROWNUM < 6;

但是如何在SQL Server中编写相同的查询?我从未在SQL Server上工作过。所以任何经典的解决方案都值得赞赏。

由于

5 个答案:

答案 0 :(得分:3)

在SQL Server中,您可以像这样实现此行为:

SELECT TOP 6 Empno, Ename, Job, Mgr, Hiredate, Sal FROM Emp ORDER BY NULLIF(Sal, 0) DESC;

答案 1 :(得分:1)

很简单:

SELECT TOP 100 ....

答案 2 :(得分:1)

你可以尝试

select top <n> ....

答案 3 :(得分:1)

我认为你要找的是select top N,就像这样:

SELECT TOP 6 Empno, Ename, Job, Mgr, Hiredate, Sal FROM (SELECT Empno, Ename, Job, Mgr, Hiredate, Sal FROM Emp ORDER BY NVL(Sal, 0) DESC);

答案 4 :(得分:1)

只需在select中使用TOP根据order子句获取第一个值,或者如果它不存在,则根据一个或多个索引。

SELECT  top <n> *
FROM    Table1
ORDER BY OrderCol <desc>