有如下三个表:student,class,teacher
查询课程-法学 成绩前五名的学生姓名,老师姓名,成绩倒序排序
建表
CREATE TABLE student(studentid INT,studentname VARCHAR(255),classid INT,score FLOAT)
CREATE TABLE class(classid INT,classname VARCHAR(255),teacherid INT)
CREATE TABLE teacher(teacherid int,teachername varchar(255))
插入数据
INSERT INTO student(studentid,studentname,classid,score)VALUES
(10,'十同学',001,80),(10,'十同学',002,82),(10,'十同学',003,83),(10,'十同学',005,85),(10,'十同学',010,85),
(2, '李四', 002,88),(2, '李四', 001,88),(2, '李四', 003,88),(2, '李四', 005,88),(2, '李四', 010,88),
(3, '王二麻子', 003, 76),(3, '王二麻子', 001, 70),(6, '王二麻子', 002, 76),(6, '王二麻子', 010, 76),(6, '王二麻子', 009, 76),
(4, '张龙', 001, 99),(4, '张龙', 002, 59),(4, '张龙', 003, 69.9),(4, '张龙', 005, 79),(4, '张龙', 010, 89),
(5, '赵虎', 001,88),(5, '赵虎', 002,88),(5, '赵虎', 003,88),(5, '赵虎', 005,88),(5, '赵虎', 010,88),
(1,'一同学',001,89.9),(1,'一同学',002,89),(1,'一同学',003,86),(1,'一同学',005,89),(1,'一同学',010,81)
insert into class(classid,classname,teacherid)values
(001,'法学',1),(002,'语文',2),(003,'数学',3),(004,'历史',4),(005,'政治',6),(006,'课程6',6),(010,'课程十',10)
insert INTO teacher(teacherid,teachername)VALUES(1,'易老师'),(2,'二老师'),(3,'散老师'),(4,'付老师'),(5,'五老师'),(6,'陆老师'),(10,'石老师')
查询
这里使用内链接 INNER JOIN ON
语法规则是:
select * from(表1 inner join 表2 on 表1.字段=表2.字段) inner join 表3 on 表1.字段=表3.字段
SELECT studentname,score,teachername FROM (class INNER JOIN student on class.classid=student.classid)
INNER JOIN teacher ON class.teacherid=teacher.teacherid WHERE class.classname='法学' ORDER BY score DESC
此方法适用于多个表,四五六七个都行
四个表方法如下:
select * from ((表1 inner join 表2 on 表1.字段=表2.字段)
inner join 表3 on 表1.字段=表3.字段)
inner join 表4 on 表1.字段=表4.字段
其他多表以此类推…