我有两个选择语句:
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;
答案 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 ...
有关详细说明,请参阅此图片:
目前看来,很难根据您希望查询返回的内容来区分您的要求是什么,但我认为此图片将直观显示语法对于每个连接。
答案 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";