mysql多表联合查询练习
时间: 2023-11-03 08:07:15 浏览: 127
多表联合查询是MySQL中非常常见的操作,可以通过JOIN语句实现。在进行多表联合查询时,需要确定要查询哪些表,并且需要确定它们之间的关联关系。常见的JOIN语句包括内连接、左连接、右连接和全连接等。其中,内连接是最常用的一种,可以通过INNER JOIN或者JOIN关键字实现。在内连接中,只有在两个表中都存在匹配的数据时才会返回结果。除了JOIN语句外,还可以使用子查询、UNION语句等方式实现多表联合查询。下面是一个简单的练习示例:
假设有三个表:员工表(emp)、部门表(dept)和工作表(job),它们之间的关系如下:
- 员工表(emp)中包含员工的ID、姓名、工资、所属部门ID和工作ID等信息;
- 部门表(dept)中包含部门的ID、名称和所在地等信息;
- 工作表(job)中包含工作的ID、名称和描述等信息。
现在需要查询所有员工的姓名、工资、所在部门名称和工作名称,请写出相应的SQL语句。
SELECT e.ename, e.salary, d.dname, j.jname
FROM emp e
INNER JOIN dept d ON e.dept_id = d.id
INNER JOIN job j ON e.job_id = j.id;
相关问题
mysql三表联合查询练习题
### MySQL 三表联查练习题示例
#### 题目描述
假设有一个学校管理系统,其中包含三个表格:`students` 表存储学生信息;`subjects` 表存储课程信息;`scores` 表记录学生的成绩。现在需要编写 SQL 查询来获取每个科目中获得最高分的学生 ID 和姓名。
#### 数据库结构定义
```sql
CREATE TABLE students (
StudentID INT PRIMARY KEY,
Name VARCHAR(100),
Age INT
);
CREATE TABLE subjects (
SubjectID INT PRIMARY KEY,
Name VARCHAR(100)
);
CREATE TABLE scores (
ScoreID INT PRIMARY KEY,
StudentID INT,
SubjectID INT,
Score DECIMAL(5,2),
FOREIGN KEY (StudentID) REFERENCES students(StudentID),
FOREIGN KEY (SubjectID) REFERENCES subjects(SubjectID)
);
```
#### 正确的查询语句
为了得到所需的信息,可以采用如下方式构建查询:
```sql
SELECT
s.StudentID AS Sid,
st.Name AS Sname,
su.Name AS SubName,
MAX(sc.Score) AS MaxScore
FROM
scores sc
JOIN
students st ON sc.StudentID = st.StudentID
JOIN
subjects su ON sc.SubjectID = su.SubjectID
GROUP BY
sc.SubjectID;
```
上述查询通过 `JOIN` 关键字将三个表按照主外键关系连接起来,并利用聚合函数 `MAX()` 来找出各科目的最高分数[^1]。同时,在最终结果集中加入了对学生名字以及所修读课程名称的选择,以便更直观地展示数据[^3]。
需要注意的是,如果希望进一步精确到具体哪位同学获得了该门课的最佳成绩,则可以在外部再嵌套一层子查询或者使用窗口函数来进行处理[^2]。
阅读全文
相关推荐













