今天看了点sql,纠结了好久的left join跟right join
a left join b 结果就是会返回a中的所有行,即使b中没有符合条件的行
a right join b 结果就是会返回b中的所有行,即使a中没有符合条件的行
a inner join b 结果就是返回两表中匹配的行
例子如下,其实对于上面的说法我总觉得有点怪怪的,不过看了例子就啥都晓得了
表a
ID NAME PR
1 oracal aa
2 sql bb
3 access cc
表b
ID DATE SR
1 2011-1-2 sril
2 2011-1-3 scott
4 2011-1-3 wrox
写出得到下列结果的sql语句
ID NAME DATE
1 oracal 2011-1-2
2 sql 2011-1-3
3 access null
SELECT a.ID,a.NAME,b.SR FROM A AS a left JOIN B AS b ON a.ID=b.ID作者: momo 时间: 2011-5-15 22:21:44
select a.ID,a.name,b.date from A as a inner join B as b on a.ID=b.ID
那结果应该就是
ID NAME DATE
1 oracal 2011-1-2
2 sql 2011-1-3
SELECT a.ID,a.NAME,b.DATE FROM A AS a right JOIN B AS b ON a.ID=b.ID
那结果应该就是
ID DATE NAME
1 2011-1-2 sril
2 2011-1-3 scott
4 2011-1-3 null作者: Alvin 时间: 2011-5-15 23:17:08