具有条件的多个表的SQL查询

时间:2016-07-04 18:15:57

标签: mysql sql union

使用MySQL,我想在一个插页中完成所有这些:

  
      
  1. 表T1包含列Ca和& CB。 T1在数据库D1中。插入表T1,指定列Ca,Cb。
  2.   
  3. 表T2包含C2列。 T2在数据库D2中。用T2.C2
  4. 设置T1.Ca的值   
  5. 表T3包含C3和C3列。 C4。 T3在数据库D2中。使用T2.C2值查询T3.C3并使用同一行的C4值来设置T1.Cb
  6.   

所以我做了:

insert into T1(Ca, Cb)
select C2
from D2.T2
union
select C4
from D2.T3
where C3=T2.C2;

错误代码:1054。未知列' T2.C2'在' where子句'

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:1)

如果我理解你应该使用联接而不是联盟

   insert into D1.T1(Ca, Cb)
   select T2.C2, T3.C4
   from D2.T2 
   INNER JOIN D2.T3 on T2.C2 = T3.C3

联盟的第二个选择不知道第一个选择的内容..所以你有错误

  

'where子句'中的未知列'T2.C2'

答案 1 :(得分:0)

联盟的查询彼此独立 你想加入这些表。

select C2,C4
from D2.T2 a
INNER JOIN  D2.T3 b  ON b.C3=a.C2;