【发布时间】:2015-09-28 04:41:39
【问题描述】:
SELECT
c.CONSOL_INVOICE,
cu.name,
cu.CUST_CODE,
c.bu_name,
cLang.name
FROM CONSL_INV c
LEFT JOIN customers cu ON c.cust_code = cu.CUST_CODE,
customers_lang cLang
WHERE
upper(cLang.NAME) LIKE ?
AND upper(cLang.LANGUAGE_CD) = ?
AND c.CUST_CODE = cLang.CUST_CODE
此查询在 Oracle Sql Developer 中正确执行,但在休眠中不执行。
它给出了以下错误:
“ORA-00918:列定义不明确”
我知道这是因为多个列具有相同的名称,但我已经正确完成了,但仍然不知道为什么它没有在休眠状态下执行。
【问题讨论】:
-
尝试为列
cu.name和cLang.name添加别名 -
既然知道是多列同名,为什么不用别名呢?
-
另外,你真的不应该在查询中混合使用 ANSI 连接和逗号分隔的表。它的可读性较差,更容易出错。