在Oracle SQL中不明确地定义列

问题描述 投票:0回答:2

在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

请帮我

sql oracle
2个回答
3
投票

最有可能的问题是,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

顺便说一句,如果这个答案是正确的,那么它可能表明一个设计问题,即同一模式中的两个表有一列可能存储相同或相似的数据。所以,您可能想重新考虑您的表格设计。


3
投票

如果存在于两个表中,您需要ACTIVE_FLAGMERIT_POSITION别名的前缀列t1或/和t2

© www.soinside.com 2019 - 2024. All rights reserved.