查询错误,两个带左连接的select语句?

时间:2014-10-27 09:05:52

标签: sql left-join

我有两个选择语句:

A: select a.1,a.2,a.3 from table1 a

B: select b.1,b.2,b.3 from table1 b

现在我加入这两个陈述?

我尝试了以下方式并收到错误:

select * 
(select a.1,a.2,a.3 from table1 a) aa
left join 
(select b.1,b.2,b.3 from table1 b) bb
aa.a.1 = bb.b.1;

2 个答案:

答案 0 :(得分:0)

在您的左连接中,您需要包含ON/WHERE子句:

select * 
(select a.1,a.2,a.3 from table1 a) aa
left join 
(select b.1,b.2,b.3 from table1 b) bb
aa.a.1 = bb.b.1,

应采用以下格式:

   SELECT *
   (SELECT a.1, a.2, a.3 FROM table1 a) aa
   LEFT JOIN
   (SELECT b.1,b.2,b.3 FROM table2 b) bb
   ON a.1 = b.1
   WHERE ...

有关详细说明,请参阅此图片:

enter image description here

目前看来,很难根据您希望查询返回的内容来区分您的要求是什么,但我认为此图片将直观显示语法对于每个连接。

答案 1 :(得分:0)

数字(a.1,a.2,即表别名a的第1列和第2列)通常不是有效的列名。这些列真的如此命名吗?然后你需要一些东西来表明这些是列名。取决于可能是“a.1”或“#34; a.1"或[a.1]。或者使用不同的名称,例如num1,num2,num3或者一,二,三等

编辑:您在标准之前也遗漏了ON这个词。并且aa.a.1无效,因为您的表别名现在是aa而列名仍然是" 1"并且表别名a不再为人所知。所以它必须是a."1"。此外,您缺少第一个派生表的关键字FROM。

select * 
from      (select a."1", a."2", a."3" from table1 a) aa
left join (select b."1", b."2", b."3" from table1 b) bb ON aa."1" = bb."1";
相关问题