MySQL连表查询

  1. 联表查询
  1. 内联查询(取等号两边的交集)

当两张相比如学生表中的班级id和班级表的id一致
select 表A字段,表B字段 from 表A inner join 表B on 表A字段=表B字段;
select students.name,classes.name from students inner join classes on students.cls_id=classes.id;
联表查询并排序
select students.id,students.name,classes.name from students inner join classes on students.cls_id=classes.id order by classes.name,students.id;

  1. 左连接
    以left左边的表为基准,left右边的表没有则显示为null
    select * from students left join classes on students.cls_id=classes.id;
  2. 右连接同做连接一样,以right右边表为基准,其实就相当于将左连接的表A和表B调换位置,因此很少用右连接,直接以左连接代替
  1. 自关联

自关联其实就是内联的思想,只是在操作过程中通过as取名将其理解为两张表
实现自关联需要一个字段中存储着另一个字段的信息,比如魔兽英雄人物表:
MySQL连表查询
该表可以分成三类:族群,英雄,技能;p_id关联的是所属id,比如暴风雪是大法师的技能,因此其p_id为大法师的id,由此便可通过as取名的方式进行内联查询
比如查询人族中的英雄
select * from heros as type inner join heros as heros on type.id=heros.p_id having type.name=‘人族’;
MySQL连表查询