比较来自世界各地的卖家的域名和 IT 服务价格

混合 "USING" 和 "ON" 在 Oracle ANSI 联系

我写了一个表达式 Oracle SQL 像那样:


SELECT
...
FROM mc_current_view a
JOIN account_master am USING /account_no/
JOIN account_master am_loan ON /am.account_no = am_loan.parent_account_no/
JOIN ml_client_account mca USING /account_no/


当我想运行它时 Oracle 在字符串中给出错误 "ON" self-join, 请讲: "ORA-25154: column part of USING clause cannot have qualifier".

如果我放弃了限定符 "am", 他会说: "ORA-00918: column ambiguously defined".

解决这个问题的最佳方式是什么?
已邀请:

二哥

赞同来自:

错误消息实际上是 /惊喜!/ 告诉你究竟是什么问题。 一旦你使用该报价 USING 对于特定列,您不能使用列限定符/在请求的任何其他部分中的本列名的假名表。 解决这个问题的唯一方法 - 不要使用句子 USING 您的请求中无处可行,因为您必须具有第二个连接条件的限定符:


SELECT
...
FROM mc_current_view a
JOIN account_master am ON /a.account_no = am.account_no/
JOIN account_master am_loan ON /am.account_no = am_loan.parent_account_no/
JOIN ml_client_account mca ON /a.account_no = mca.account_no/;

涵秋

赞同来自:

我更喜欢永远不使用

USING

; 始终使用

ON

. 我喜欢我的 SQL 很明显和

句子 USING, 在我看来,它似乎远程一步。

在这种情况下,发生错误 , 你有什么
account_no


mc_current_view

,
account_master


ml_client_account

, 因此,实际连接不能解决。 我希望它会有所帮助。

冰洋

赞同来自:

使用更清洁 /imo/, 但仍然优选地在外部引用连接字段,如示例中那样 org 或者在示例中,类似于这一点:


select A.field,
B.field,
/select count/C.number/
from tableC C
where C.join_id = join_id -- wrong answer w/o prefix, exception with.
/ avg_number
from tableA A
join tableB B using /join_id/;


它给出了错误的答案,因为 join_id 在子查询内部暗示 C.join_id /所有记录的巧合/, 但不是 A 或者 B. 也许解决问题的最佳方法可以简单地允许使用两个世界的最佳链接。 似乎在这种情况下需要。

要回复问题请先登录注册