MySQL左外部联接,右表中的列不是外键

时间:2018-11-20 09:15:04

标签: mysql sql left-join

我对左外部连接的理解是

table1:
id(pk) name(unique_key) address phone

table2:
    new_id(pk) name(foreign key) company work-experience

1st table:
1 a x 123
2 b y 234
3 c z 345

2nd table
1 a aaa 2
2 a aab 3
3 b aab 3

如果我愿意,

select * from table1 left outer join table2 on table1.name=table2.name,

it will give me
1 a x 123 1 a aaa 2
1 a x 123 2 a aab 3
2 b y 345 3 b aab 3
3 c z 345 NULL NULL NULL NULL

现在而不是上面的结果,我想获取公司为aab的所有行。另外,对于第一个表中的任何条目,如果第二个表中没有相应的条目,则它应该为我提供第二个表中所有列的NULL。

像这样:

1 a x 123 aab 3
2 b y 234 aab 3
3 c z 345 NULL NULL

使用左外部连接是否可能获得上述结果?如果没有,如何获得以上结果?

2 个答案:

答案 0 :(得分:1)

您可以简单地在ON的{​​{1}}部分中添加第二个表(右侧表)的条件。

LEFT JOIN

此外,在多表查询的情况下,建议使用Aliasing,以确保代码清晰(增强可读性)并避免明确的行为。

答案 1 :(得分:1)

select t1.name,t1.address,t1.phoneNo,t2.comapnay,t2.workExperiance from table1 as t1 left outer join table2 as t2 on t1.name=t2.name AND t2.company = 'aab'