获取在 Oracle SQL 中定义不明确的列



在 Oracle 中,在以下查询中添加 where 子句时,出现错误

列定义不明确

查询:

SELECT
t1.*, t2.*
FROM
NM_APPLICATION t1
LEFT JOIN 
NM_QUOTA t2 ON t2.QUOTA_ID = t1.QUOTA_ID
WHERE
ACTIVE_FLAG = 'Y'
ORDER BY
MERIT_POSITION DESC

请帮助我

这里很可能的问题在于表NM_APPLICATIONNM_QUOTA都有一个名为ACTIVE_FLAG的列。 解决方法是确定要使用的表的列,然后为该表提供别名:

SELECT t1.*, t2.*
FROM NM_APPLICATION t1
LEFT JOIN NM_QUOTA t2
ON t2.QUOTA_ID = t1.QUOTA_ID
WHERE t1.ACTIVE_FLAG = 'Y'        -- or t2.ACTIVE_FLAG
ORDER BY MERIT_POSITION DESC

顺便说一下,如果这个答案是正确的,那么它可能表明同一架构中的两个表具有可能存储相同或相似数据的列的设计问题。 因此,您可能需要重新考虑您的表格设计。

您需要前缀列ACTIVE_FLAG或/和按t1t2MERIT_POSITION别名(如果两个表中都存在(

最新更新