我写了一个像这样的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”自连接行中抛出一个错误:“ORA-25154:USING子句的列部分不能有限定符”.
如果我省略“am”限定符,它会说:“ORA-00918:列模糊定义”.
解决方法
错误信息实际上是(惊喜!)告诉你究竟是什么问题.对特定列使用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);