资料来源:[url]http://www.sql-tutorial.net/SQL-JOIN.asp[/url]
学后笔记(声明:不同的database可能不同):、
概述:
join 有两种:inner join 和 outer join。如果join前面什么都不加,默认为inner join。
详述:
1. inner join:比如 select a.Id,a.name,b.desc from A a join B b on a.Id=b.Id
语句会查出[[color=red]除了在关联表B中没有关联关系[/color]]的A表中的所有数据,显然,如果没有一条关联记录,那么结果也是什么都查不到。
2. outer join:又分两种--left join 和 right join
(i) left <outer> join : select a.id, a.name,b.desc from A left join B b on a.Id=b.Id,会查出[color=red]from[/color]后的表A所有的记录,而[color=red]join[/color]后的表B,如果对应的b.desc无数据以空补。
(ii) right <outer> join :select a.id,a.name,b.desc from A right join B b on a.id=b.id,和(i)相似,会查出所[color=red]join[/color]后的表B所有的数据,而[color=red]from[/color]后的表A对应的a.id,a.name无数据的话以空补。
学后笔记(声明:不同的database可能不同):、
概述:
join 有两种:inner join 和 outer join。如果join前面什么都不加,默认为inner join。
详述:
1. inner join:比如 select a.Id,a.name,b.desc from A a join B b on a.Id=b.Id
语句会查出[[color=red]除了在关联表B中没有关联关系[/color]]的A表中的所有数据,显然,如果没有一条关联记录,那么结果也是什么都查不到。
2. outer join:又分两种--left join 和 right join
(i) left <outer> join : select a.id, a.name,b.desc from A left join B b on a.Id=b.Id,会查出[color=red]from[/color]后的表A所有的记录,而[color=red]join[/color]后的表B,如果对应的b.desc无数据以空补。
(ii) right <outer> join :select a.id,a.name,b.desc from A right join B b on a.id=b.id,和(i)相似,会查出所[color=red]join[/color]后的表B所有的数据,而[color=red]from[/color]后的表A对应的a.id,a.name无数据的话以空补。