与其他sql的输出进行连接
我有两个表,如下T1和T2 现在我想做以下事情:对于T1.A的每个值,我想加入T2.B 比如:与其他sql的输出进行连接,sql,oracle,Sql,Oracle,我有两个表,如下T1和T2 现在我想做以下事情:对于T1.A的每个值,我想加入T2.B 比如: select * from T1 ,(select * from where T2 where T2.B = T1.A) 这是正确的吗?当我尝试这样做时,我得到一个错误,说T1.A是无效的标识符 我知道我可以从T1,T2中选择,其中T1.A=T2.B 但是我的用例非常复杂。查询select*from where T2 where T2.B=T1.A非常复杂 那我该怎么做呢?除非我弄错了,否则你就不能
select * from T1 ,(select * from where T2 where T2.B = T1.A)
这是正确的吗?当我尝试这样做时,我得到一个错误,说T1.A是无效的标识符
我知道我可以从T1,T2中选择,其中T1.A=T2.B
但是我的用例非常复杂。查询select*from where T2 where T2.B=T1.A非常复杂
那我该怎么做呢?除非我弄错了,否则你就不能用JOIN: 祝你好运。你只需要加入表格:
select *
from T1
inner join T2
on T2.B = T1.A
如果您需要学习连接语法的帮助,这里有一个很好的方法
我使用了一个内部连接,它将返回T1和T2之间匹配的行。您可能需要使用左联接,它将返回T1中的所有行,即使T2中没有匹配的行
如果有其他查询可供选择,则可以使用子查询:
select *
from T1
inner join
(
-- place your query here
select *
from T2
) T2
on T2.B = T1.A
如果子查询仅返回一列,则可以使用:
select t1.*, (select t2.col1 from T2 t2 where t2.B = t1.A)
from T1 t1
你能行
select *
from T1
inner join T2
on T2.B = T1.A
正如其他人所说。
但是,此版本仅为可读性而首选
你也可以继续使用
select * from T1,T2 where T1.A = T2.B
优化器会找到答案,然后做完全相同的事情,
因为查询是等价的
你可以继续使用它,因为它没有问题。选择A,T1.B,选择*从哪里T2,其中T2.B=T1.A从T1。这会有帮助吗?我知道,我在我的原始帖子中已经提到了。但是第二个表不是一个表,它是一些复杂查询的输出。请阅读post的结尾部分,但是它本身需要T1.a来在其中使用。你能发布你的实际查询吗?对不起,不,根据我公司的政策:你能帮我回答rohit建议的答案吗?我有错误,我有错误,说T1.A是无效的标识符。在尝试选择T1.A、T1.B时,从Tab2中选择COL3作为T2,其中,Tab1中的T2.COL3=T1.A T1在MS-SQL 2008Oops中对我有效。我不知道你在用甲骨文
select * from first_table inner join second_table on first_table.X = second_table.Y
select * from T1,T2 where T1.A = T2.B
select * from first_table inner join second_table on first_table.X = second_table.Y