假设a表有两个字段,Aid、name, b 表也有两字段 Bid,nameid 其中 nameid是Aid在b 表中的外键。
a表有数据如下:
Aid name
1 a
2 b
3 c
b表有数据如下:
Bid nameid
1 1
2 1
3 1
4 2
5 2
用左连接,说白一点就是以左边那个表为标准,左边那表(表a)的所有记录必须得全部出现,
例如: select * from a left join b on a.Aid=b.nameid 结果应应该为:
Aid name Bid nameid
1 a 1 1
1 a 2 1
1 a 3 1
2 b 4 2
2 b 5 2
3 c NULL NULL
表a 的 Aid为1的出现了三次,Aid为2的出现了两次,Aid为3的出现了一次,全部都出现了。
但因为在表b中没有以Aid为3对应的记录,所以用null来填充。
同样道理,用右连接,说白一点就是以右边那个表为标准, 例如:select * from a right join b on a.Aid=b.nameid 结果应该为:
Aid name Bid nameid
1 a 1 1
1 a 2 1
1 a 3 1
2 b 4 2
2 b 5 2
表b的记录必须全部出现,但没有出现 a表中Aid为3的记录,是因为b表中没有以之对应的记录,而且此时是以b表为标准的。