我给出以下错误:当我尝试使用“ order by”选择id_prof并同时对不同表的列进行合并时,出现“ ORA-01785:ORDER BY项目必须为SELECT列表表达式的编号”
命令如下:
select substr(nume, 1, 1)||'.'||regexp_replace(prenume, '[aeiou]', null, 1, 0, 'i') as "Rododendron"
from studenti
union
select ceil(sqrt(to_number(substr (id_prof, 2, 1))*2)) as "Fata de con"
from profesori
where grup_didactic = 'Lect'
order by to_number(substr (id_prof, 2, 1)) desc;
这些表格在以下图片中:FirstPicture SecondPicture
我想最后两列。
第一个字母应包含“ nume”的第一个字母,并以“。”连接。和没有元音的“ prenume”(列名为“ Rododendron”)。
在第二个中,我想从id_prof的数字(称为“ Fata de con”的列)的双数中取一个圆角的平方根,作为在“ profesori”中可以找到的一切,其中grup_didactic ='lector ',并且一切都按id_prof后的顺序排序。
有什么帮助吗?
答案 0 :(得分:0)
Oracle说,您无法按SELECT
列列表中未包含的列对结果进行排序;例如这个简单的Scott模式范例:
SQL> select ename from emp
2 union
3 select dname from dept
4 order by substr(ename, 1, 3);
order by substr(ename, 1, 3)
*
ERROR at line 4:
ORA-01785: ORDER BY item must be the number of a SELECT-list expression
我想说 sorting 是目前您遇到的最少问题。 UNION
将不会返回两列;删除ORDER BY
并亲自查看-如果您很幸运,则会看到一列。
这就是您现在要做的:
select col from studenti
union
select another_col from profesori
想要获得的时候
select col, another_col
from ...
FROM
子句很棘手,因为您似乎要从两个不同的表中进行选择。您可以加入他们,以便查询看起来像第二个选择吗?如果没有,您总是可以做笛卡尔积,但这很可能是错误的结果。
如果您提供示例输入数据并说明如何从该输入中获取结果,这将有所帮助。