mysql 子查询使用ALL
时间: 2023-10-16 12:28:37 浏览: 51
在 MySQL 中,ALL 关键字用于子查询中,表示必须符合所有条件才能返回结果。
例如,考虑以下两个表:
students 表:
| id | name | age |
|----|--------|-----|
| 1 | Alice | 20 |
| 2 | Bob | 22 |
| 3 | Charlie| 19 |
scores 表:
| id | student_id | subject | score |
|----|------------|---------|-------|
| 1 | 1 | Math | 80 |
| 2 | 1 | English | 90 |
| 3 | 2 | Math | 85 |
| 4 | 2 | English | 75 |
| 5 | 3 | Math | 90 |
现在,我们想要找到所有数学成绩高于英语成绩的学生。我们可以使用以下查询:
```
SELECT name FROM students WHERE id = ALL (
SELECT student_id FROM scores WHERE subject = 'Math' AND score > (
SELECT score FROM scores WHERE student_id = students.id AND subject = 'English'
)
);
```
这个查询首先在 scores 表中找到所有数学成绩高于英语成绩的学生的 ID,然后在 students 表中找到这些学生的名字。
在这个查询中,ALL 关键字确保所有条件都被满足。如果子查询返回空结果集,则整个查询也将返回空结果集。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)