回答

收藏

是否可以在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;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则