是否可以在Oracle 11g SQL中为子查询赋予别名?
技术问答
412 人阅读
|
0 人回复
|
2023-09-14
|
有没有一种方法可以给你Oracle 11g中子查询一个别名,例如:
& Z A" K1 C: Xselect * from (select client_ref_id,request from some_table where message_type = 1) abc, (select client_ref_id,response from some_table where message_type = 2) defgwhere abc.client_ref_id = def.client_ref_id;否则,有一种方法可以基于它client_ref_id添加两个子查询。我意识到有一个自我连接,但在我在自我连接上运行的数据库上完成它可能需要5分钟(我在实际查询中有一些额外的逻辑,但我确定是什么导致了自我连接的问题)。每个子查询只需几秒钟即可完成。自联查询看起来像:
! p0 v. U' d ?4 `- rselect st.request,st1.requestfrom some_table st,some_table st1where st.client_ref_id = st1.client_ref_id;
' Z* L( ]6 P- v( d. h 解决方案: # P1 P, K- J/ ]0 g& g
您可以使用Oracle的CTE(也称公共表达式)(也称公共表达式)WITH作为子查询分解,为查询提供名称或别名:
: z( S/ u0 h4 X; ^1 QWITH abc as (select client_ref_id,request from some_table where message_type = 1)select * from abc inner join (select client_ref_id,response from some_table where message_type = 2) defg on abc.client_ref_id = def.client_ref_id; |
|
|
|
|
|