MySql(连接查询)

原创
2016/04/10 22:27
阅读数 78

一,内连接

    内连接:[inner] join,从左表中每取出一条记录,都跟右表中所有的记录匹配,匹配必须是某个条件在左表和右表中条件相同才会保留结果。否则不保留。

    基本语法:

    左表[inner] join 右表 on 左表.字段=右表.字段 ;on表示连接条件,条件字段就是代表相同的业务含义,如(student.cid = class.id) 。

    

select * from my_user inner join my_class on my_user.c_id = my_class.id ;

    字段别名+表别名

select u.*,u.name as u_name,c.name as c_name from         =====字段别名
my_user as u inner join my_class as c                     =====表别名    
on u.c_id = c.id ;

    内连接可以没有连接条件,即可以没有on后边内容,这个时候系统会保留所有结果,即出现笛卡尔积。

    所以,内连接可以使用where代替on关键字。on效率更高   

二,外链接

    外链接:以某一个表为主表,取出里边的所有记录,然后每条与另一个表中进行连接,不管能不能匹配上条件,最终都会保留,如果能匹配,则保留,如果不能匹配则另一个表的字段为空null。

    外链接分两种,因为以某一个表为主表,所以需要一个主表

    Left join :左外链接  以左表为主表

    Right join : 右外链接  以右表为主表

    基本语法: 左表 left/right join 右表 on 左表.字段=右表.字段 ;

    左外链接

select u.*,c.name as c_name,c.id as c_id from
my_user as u left join my_class as c 
on u.c_id = c.id ;        ====左表为主表,最终记录数至少不少于左表已有记录数

    右外链接

    

select u.*,c.name as c_name,c.id as c_id from
my_user as u right join my_class as c 
on u.c_id = c.id ;

    左外连接和右外链接虽然有主表差异,但是显示的结果,左表数据在左边,右表数据在右边。

    

展开阅读全文
打赏
2
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
2
分享
返回顶部
顶部