select * from cust
where cust_id in
(select cust_id from acc_co
where objectum = 'EXIST');
在acc_co表中没有cust_id列。但是当我运行选择时,它有结果。但是怎么做?
(这次选择的结果和cust表的行号是一样的。)
select * from cust
where cust_id in
(select cust_id from acc_co
where objectum = 'EXIST');
在acc_co表中没有cust_id列。但是当我运行选择时,它有结果。但是怎么做?
(这次选择的结果和cust表的行号是一样的。)
为列添加前缀应该为您回答这个问题:
select * from cust c
where c.cust_id in
(select a.cust_id from acc_co a
where a.objectum = 'EXIST');
VS
select * from cust c
where c.cust_id in
(select c.cust_id from acc_co a
where a.objectum = 'EXIST');
cust
表格)。ORA-00918: column ambiguously defined
高温高压
问题是您不使用别名,因此 DBMS 认为它cust_id
是第一个表的列cust
。由于您使用的是相关子查询,因此可以将子查询中的数据识别为内部数据或外部表数据。这种情况不仅适用于任何 RDBMS,Oracle
而且适用于任何 RDBMS。为避免这种歧义,请在相关子查询中使用别名。