Sql 选择错误:ORA-00918:定义不明确的列
我试图通过特定的Sql 选择错误:ORA-00918:定义不明确的列,sql,oracle,Sql,Oracle,我试图通过特定的受益人\u民事\u编号从两个同义词中获取一些数据,但我得到了一个错误 SELECT n.NAME_A, m.MOTHER_NAME_A FROM S_S_CSPF_NRS_PERSON_V N, S_S_CSPF_NRS_MOTHER_V M WHERE BENEFICIARY_CIVIL_NUMBER = 1111111 我认为您需要在您的WHERE子句中使用带有受益人\u民事号码列的别名。我假设此列属于S\u S\u CSPF\u NRS\u PERSON\u V表,因此
受益人\u民事\u编号
从两个同义词中获取一些数据,但我得到了一个错误
SELECT n.NAME_A, m.MOTHER_NAME_A
FROM S_S_CSPF_NRS_PERSON_V N, S_S_CSPF_NRS_MOTHER_V M
WHERE BENEFICIARY_CIVIL_NUMBER = 1111111
我认为您需要在您的
WHERE
子句中使用带有受益人\u民事号码
列的别名。我假设此列属于S\u S\u CSPF\u NRS\u PERSON\u V
表,因此查询应为:
SELECT n.NAME_A, m.MOTHER_NAME_A
FROM S_S_CSPF_NRS_PERSON_V n, S_S_CSPF_NRS_MOTHER_V m
WHERE n.BENEFICIARY_CIVIL_NUMBER = 1111111
您当前正在两个表之间进行交叉联接。如果这是你想要的,那就保持原样。如果您想要一个内部联接
,那么为什么不将其明确化:
SELECT n.NAME_A, m.MOTHER_NAME_A
FROM S_S_CSPF_NRS_PERSON_V n
INNER JOIN S_S_CSPF_NRS_MOTHER_V m
ON n.col1 = m.col2
WHERE n.BENEFICIARY_CIVIL_NUMBER = 1111111
我认为您需要在您的
WHERE
子句中使用带有受益人\u民事号码
列的别名。我假设此列属于S\u S\u CSPF\u NRS\u PERSON\u V
表,因此查询应为:
SELECT n.NAME_A, m.MOTHER_NAME_A
FROM S_S_CSPF_NRS_PERSON_V n, S_S_CSPF_NRS_MOTHER_V m
WHERE n.BENEFICIARY_CIVIL_NUMBER = 1111111
您当前正在两个表之间进行交叉联接。如果这是你想要的,那就保持原样。如果您想要一个内部联接
,那么为什么不将其明确化:
SELECT n.NAME_A, m.MOTHER_NAME_A
FROM S_S_CSPF_NRS_PERSON_V n
INNER JOIN S_S_CSPF_NRS_MOTHER_V m
ON n.col1 = m.col2
WHERE n.BENEFICIARY_CIVIL_NUMBER = 1111111
我的猜测是,
S\u CSPF\u NRS\u PERSON\u V
和S\u CSPF\u NRS\u MOTHER\u V
中都存在S\u CIVIL\u NUMBER
列
您也需要指定它。要么:
where n.BENEFICIARY_CIVIL_NUMBER = 1111111
其中,n.受益人编号=1111111
或:
其中,m.受益人\民事\编号=1111111
另外,什么是
受益人\民事\编号
数据类型?Varchar?我猜,受益人\公民\编号
列既存在于S\u CSPF\u NRS\u PERSON\u V
中,也存在于S\u CSPF\u NRS\u母亲\ V
中
您也需要指定它。要么:
where n.BENEFICIARY_CIVIL_NUMBER = 1111111
其中,n.受益人编号=1111111
或:
其中,m.受益人\民事\编号=1111111
另外,什么是受益人\民事\编号
数据类型?瓦查尔
问题:我的SQL select语句出现ORA-00918错误
它连接两个表。如何更正此ORA-00918错误?答:Oracle文档在ora-00918错误中注意到这一点::\ora-00918 定义模糊的列 原因:联接中使用的列名存在于多个表中,并且 因此被含糊不清地引用。在联接中,出现的任何列名 在多个表中,当 参考。该列应被引用为TABLE.column或 表1.1列。例如,如果正在使用EMP和DEPT表 joined和两者都包含列DEPTNO,然后是对的所有引用 DEPTNO应该以表名作为前缀,如EMP.DEPTNO或 E.DEPTNO 操作:为多个字段中存在的列名添加前缀引用 具有表名或表别名以及句点(.)的表, 如上面的例子所示 当抛出ORA-00918时,您有一个含糊不清的列 定义如果联接中的列名被模糊引用,则 存在于多个表中 出现在多个表中的列名在 由其表名引用。列必须被引用为 TABLE.COLUMN或TABLE_ALIAS.COLUMN。Oracle文档 参考ORA-00918给出了以下示例: -如果表EMP和DEPT正在联接,并且都包含列DEPTNO,那么对DEPTNO的所有引用都应该加前缀 表名,如EMP.DEPTNO或E.DEPTNO中的表名 要更正ORA-00918,应在列名前加上引用 存在于多个表中(使用表名或表别名 (还有一段时间) 因此,尽管您使用前缀
n
或m
定义了n.NAME\u A、m.MOTHER\u NAME\u A
,但您没有定义可能导致错误的受益人编号
若要解决此问题,请在受益人\u民事\u号码中添加前缀
问题:我的SQL select语句出现ORA-00918错误
它连接两个表。如何更正此ORA-00918错误?
答:Oracle文档在ora-00918错误中注意到这一点::\ora-00918
定义模糊的列
原因:联接中使用的列名存在于多个表中,并且
因此被含糊不清地引用。在联接中,出现的任何列名
在多个表中,当
参考。该列应被引用为TABLE.column或
表1.1列。例如,如果正在使用EMP和DEPT表
joined和两者都包含列DEPTNO,然后是对的所有引用
DEPTNO应该以表名作为前缀,如EMP.DEPTNO或
E.DEPTNO
操作:为多个字段中存在的列名添加前缀引用
具有表名或表别名以及句点(.)的表,
如上面的例子所示
当抛出ORA-00918时,您有一个含糊不清的列
定义如果联接中的列名被模糊引用,则
存在于多个表中
出现在多个表中的列名在
由其表名引用。列必须被引用为
TABLE.COLUMN或TABLE_ALIAS.COLUMN。Oracle文档
参考ORA-00918给出了以下示例:
-如果表EMP和DEPT正在联接,并且都包含列DEPTNO,那么对DEPTNO的所有引用都应该加前缀
表名,如EMP.DEPTNO或E.DEPTNO中的表名
要更正ORA-00918,应在列名前加上引用
存在于多个表中(使用表名或表别名
(还有一段时间)
因此,尽管您使用前缀n
或m
定义了n.NAME\u A、m.MOTHER\u NAME\u A
,但您没有定义可能导致错误的受益人编号
若要解决此问题,请在受益人\u民事\u号码中添加前缀
它是这样工作的谢谢大家
select n.NAME_A ,m.MOTHER_NAME_A from S_S_CSPF_NRS_PERSON_V n
,S_S_CSPF_NRS_MOTHER_V m
where n.BENEFICIARY_CIVIL_NUMBER = 111111
and M.BENEFICIARY_CIVIL_NUMBER= 1111111
它是这样工作的谢谢大家
select n.NAME_A ,m.MOTHER_NAME_A from S_S_CSPF_NRS_PERSON_V n
,S_S_CSPF_NRS_MOTHER_V m
where n.BENEFICIARY_CIVIL_NUMBER = 111111
and M.BENEFICIARY_CIVIL_NUMBER= 1111111
你能分享一下桌子的结构吗