三表鏈接查詢 SQL

有如下三個表: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.字段

其他多表以此類推…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章