Oracle 子查询中的订单依据
我想在不使用min()函数的情况下从Employees表中查看拥有最低工资的员工的详细信息Oracle 子查询中的订单依据,oracle,Oracle,我想在不使用min()函数的情况下从Employees表中查看拥有最低工资的员工的详细信息 SELECT * FROM Employees WHERE SALARY IN (SELECT SALARY FROM Employees order by salary) AND ROWNUM=1 这里显示的是错误 ORA-00907:缺少右括号 90700000-“缺少右括号” *原因: *操作:第5行第18列出现错误 那么这里的
SELECT *
FROM Employees
WHERE SALARY IN (SELECT SALARY
FROM Employees
order by salary)
AND ROWNUM=1
这里显示的是错误
ORA-00907:缺少右括号
90700000-“缺少右括号”
*原因:*操作:第5行第18列出现错误 那么这里的错误是什么 我在这个网站上阅读 参见oracle的语法
in子句中不支持ORDER BY,因为它没有任何意义。过滤集合中的行,而过滤顺序并不重要。您应该对结果行进行排序,然后选择第一行(ROWNUM=1)您可以从已排序的select中进行选择,然后选择第一行
select * from
( SELECT *
FROM Employees
order by salary ) A
where rownum = 1
由于rownum将在order by之前执行,因此无法在一次选择中执行。这就是为什么我们需要在附加选择中对其进行包装。您也可以使用限制运算符
SELECT *
FROM Employee
WHERE salary IN (SELECT salary
FROM Employee
order by salary)
LIMIT 1
我曾经验证过这一点。您可以在此处进行验证:
下面是表创建和引导语句
CREATE TABLE Employee
(
name varchar(50),
salary double
);
insert into Employee values('bob', 80000.00);
insert into Employee values('john', 100000.00);
甲骨文没有限制。但它不起作用。只选择了随机的薪水。因为没有提到太多关于这个平台的信息,所以我假设它是mysql。是的,查看错误代码将有助于弄清这一点:)@deepakmarathe,错误代码“ORA-00907:缺少右括号”应该是一个很大的线索,表明它不是mysql:)