在sqldeveloper中运行查询时,我收到“%s:无效标识符”错误。基本上我想连接表1中的两列,并将它与表2中的一列进行比较。两个表来自两个不同的数据库。出于某种原因,它不喜欢t1_Name别名。
select t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.*
from table1 t1, table2 t2
where t1.t1_Name = t2.Account_name;
如果能解决这个问题,我们将不胜感激。
答案 0 :(得分:4)
您不能使用SELECT
子句中WHERE
查询列表中定义的别名。从逻辑上讲,首先处理WHERE
子句,因此别名尚不存在。
您需要复制计算
select t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.*
from table1 t1, table2 t2
where t1.First_name ||' '|| t1.Last_Name = t2.Account_name;
或者您需要在内联视图中定义别名
select t1.t1_name, t2.*
from (select t1.First_name ||' '|| t1.Last_Name as t1_Name
from table1 t1) t1
join table2 t2
on( t1.t1_name = t2.account_name )
答案 1 :(得分:0)
如果您的两个表位于不同的数据库中,则必须使用数据库链接。假设table1在数据库db1中,table2在数据库db2中。您的查询(假设您在db1上运行查询)应如下所示:
SELECT t1.First_name ||' '|| t1.Last_Name as t1_Name, t2.*
FROM table1 t1, table2@db2 t2 WHERE t1.t1_Name = t2.Account_name;
您可以在此处找到更多信息: http://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm
答案 2 :(得分:0)
您可以使用子选择:
select *
from (select t1.First_name ||' '|| t1.Last_Name t1_Name, t2.*
from table1 t1, table2 t2)
where t1_Name = Account_name;
查看this Fiddle。