sql多表联查

sql的多表联查有点忘了,搞个例子记录一下,以后再忘来看看。

一、内连接

student表:

name collegeid
张三 11
李四  

college表:

collegeid college
11 清华
  北大

内连接:
select name,college.collegename from student inner join college on student.collegeid=college.collegeid;

结果是:

name college
张三 清华

二、外连接
1.左外连接:

select student.name,college.collegename from student left outer join college on student.collegeid = college.collegeid; 

结果是:

name college
张三 清华
李四 null

左外连接的意思就是以左表为准,把左表的所有name都查询出来,而不管它的外键collegeid有没有值

2.右外连接

select student.name,college.collegename from student right outer join college on student.collegeid = college.collegeid; 

结果是:

name college
张三 清华
null 北大

同左外连接的道理,右外连接意思就是以右表为准,把右表的所有college都查询出来,而不管它的外键collegeid有没有值

 

 

 

另附自连接:

自连接和内连接原理很相似,只不过是把一张表当成两张表来查询,查询某字段的相同记录的集合。

student表:

name collegeid
张三 11
李四 22
刘五 11

sql:

select distinct a.name,a.collegeid from student a,student s where a.collegeid=s.collegeid and a.name <> s.name;

结果是

name collegeid
张三 11
刘五 11

 

 

你可能感兴趣的:(sql多表联查)