简介

使用联结可以用一条SELECT语句检索出多个表的数据,使用联结的前提是表之间存在关联(一个表的除主键外的某一列,即:外键,是另一个表的主键),例如下图:(t_student的class_id是外键,表示班级和学生是一对多的关系,即一个班级有0个或多个学生)

实例

使用where

查询学生的班号、姓名、年龄

其中班号在表t_class、姓名和年龄在表t_student

表t_student的class_Id字段是外键

1
SELECT class_num,student_name,age FROM t_class,t_student WHERE t_class.`id`=t_student.`class_id`;

使用inner join

下面的SQL语句的作用和上一条语句的作用是一样的

1
SELECT class_num,student_name,age FROM t_class INNER JOIN t_student ON t_class.`id`=t_student.`class_id`;

联结多个表

  1. 使用where

    查询学生的班号、姓名、语文成绩、数学成绩、英语成绩

    其中班号在表t_class,姓名和年龄在表t_student,语文成绩、数学成绩和英语成绩在表t_score2

    外键:表t_student的class_id字段,表t_score2的student_id字段

    1
    SELECT class_num,student_name,chinese_score,math_score,english_score FROM t_class,t_student,t_score2 WHERE t_class.`id`=t_student.`class_id` AND t_student.`id`=t_score2.`student_id`;
  2. 使用inner join

    1
    SELECT class_num,student_name,chinese_score,math_score,english_score FROM t_class INNER JOIN t_student INNER JOIN t_score2 ON t_class.`id`=t_student.`class_Id` AND t_student.`id`=t_score2.`student_id`;