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

你能分享一下桌子的结构吗