sql select 多表关联 group by having order by limit举例
时间: 2024-04-24 22:19:47 浏览: 84
SQL中的SELECT语句可以用于从一个或多个表中检索数据,并且可以使用多表关联、GROUP BY、HAVING、ORDER BY和LIMIT等子句来进一步筛选和排序数据。下面是一个示例:
假设我们有两个表:学生表(students)和成绩表(scores)。学生表包含学生的信息,包括学生ID(student_id)、姓名(name)和年龄(age)。成绩表包含学生的成绩信息,包括学生ID(student_id)和成绩(score)。
我们想要查询每个学生的平均成绩,并按照平均成绩降序排列,只显示平均成绩大于80的学生信息。可以使用以下SQL语句实现:
```
SELECT students.student_id, students.name, AVG(scores.score) AS average_score
FROM students
JOIN scores ON students.student_id = scores.student_id
GROUP BY students.student_id, students.name
HAVING average_score > 80
ORDER BY average_score DESC
LIMIT 10;
```
上述SQL语句的含义如下:
- 使用JOIN子句将学生表和成绩表进行关联,通过学生ID进行匹配。
- 使用GROUP BY子句按照学生ID和姓名进行分组。
- 使用AVG函数计算每个学生的平均成绩,并将其命名为average_score。
- 使用HAVING子句筛选出平均成绩大于80的学生。
- 使用ORDER BY子句按照平均成绩降序排列。
- 使用LIMIT子句限制结果集的数量为10条记录。
阅读全文