在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_APPLICATION
和NM_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
或MERIT_POSITION
别名的前缀列t1
或/和t2