Sql 从employees表中选择前10名薪资

Sql 从employees表中选择前10名薪资,sql,oracle,Sql,Oracle,我编写了以下sql查询: select first_name, salary from employees where salary in( select distinct top(10) salary from employees order by salary disc ); 当我运行它时,我得到了以下错误: SQL错误:ORA-00907:缺少右括号 90700000-缺少右括号 是什么导致了错误?试试这个=== 按薪资顺序按薪资描述限制10选择“从员工组中选择薪资”中的“从员工中

我编写了以下sql查询:

select first_name, salary 
from employees 
where salary in( select distinct top(10) salary from employees order by salary  disc );
当我运行它时,我得到了以下错误:

SQL错误:ORA-00907:缺少右括号 90700000-缺少右括号

是什么导致了错误?

试试这个=== 按薪资顺序按薪资描述限制10选择“从员工组中选择薪资”中的“从员工中选择薪资”中的“从员工中选择薪资”第一个\ u名称

试试这个===
按薪资顺序按薪资描述限制10选择“从员工组中选择薪资”中的“从员工中选择薪资”中的“从员工中选择薪资”第一个\ u名称

我认为问题在于top的使用,它是SQL Server而不是Oracle

改为使用秩以合理的顺序获得工资,并获得前10个:

select v.first_name, v.salary 
from ( select first_name, salary, rank() over (order by salary desc) r from employees) v
where v.r <= 10

我认为问题在于使用top,它是sqlserver而不是Oracle

改为使用秩以合理的顺序获得工资,并获得前10个:

select v.first_name, v.salary 
from ( select first_name, salary, rank() over (order by salary desc) r from employees) v
where v.r <= 10

在Oracle中,Top-N查询通常以这种方式执行:

select * from (
select first_name, salary 
from employees order by salary desc
) where rownum <= 10

这一项可以让您获得前10名的薪资。

在Oracle中,top-N查询通常是这样执行的:

select * from (
select first_name, salary 
from employees order by salary desc
) where rownum <= 10
这一项可以让你获得前十名的薪水。

试试-

SELECT first_name, salary 
(  select first_name, salary 
   from employees 
   order by salary Desc)
where rownum <= 10
试试-


下面的查询在Oracle中工作


通过sal desc从emp order中选择*from select*,其中rownum下面的查询在Oracle中工作


select*from select*from emp order by sal desc,其中rownumIs为desc刻录了一列或一个错售?这可能是您出错的原因。可能是重复的,请在子查询中不使用order by子句进行尝试。disc是desc的列还是错误销售?这可能是导致错误的原因。在子查询中不使用order by子句的情况下,可能会重复。LIMIT用于MySQL,这是ORACLE。LIMIT用于MySQL,这是ORACLE。