我在同时使用 Oracle 的 union 和 order by 子句时遇到问题。
我有两个复杂的查询(其中包含子查询),每个查询都有一个 order by 子句。我需要合并两者的输出并返回结果。当我运行它时,我收到错误 ORA-00933:SQL 命令未正确结束。
但当我注释掉它们中的 order by 子句时,它就起作用了。
为了测试这一点,我创建了一个简单的查询,如下所示
select * from employee where employee_id=2 order by name
union
select * from employee where employee_id=3 order by name;
即使在使用 order by 子句运行时也会出现相同的错误,但当我注释掉 order by 子句时运行良好。
我尝试搜索论坛,但无法找到确切问题的解决方案。我找到了一个使用 ORDER BY 和 UNION 进行 ORACLE 查询但由于子查询和太多表之间的联接,我的查询已经太复杂了,我不想实现这个。
有人可以帮助我解决问题的根本原因吗?
试试这个代码:
select e1.name name /* e1.* */
from employee e1
where employee_id = 2
union
select
e2.name name /* e2.* */
from employee e2
where employee_id = 3
order by name;
如果您想对第一个查询的结果进行排序,那么对第二个查询的结果进行排序,这样您就可以这样做:
select 1 query, e1.name name /* e1.* */
from employee e1
where employee_id = 2
union
select
2 query, e2.name name /* e2.* */
from employee e2
where employee_id = 3
order by query, name;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)