mysql 按条件取不同行的值
时间: 2023-10-19 18:52:04 浏览: 133
在 MySQL 中,可以使用 `CASE WHEN` 和 `MAX` 函数来按条件选择不同行的值。以下是一个示例:
假设有一个表格叫做 `students`,其中包含了学生姓名、科目和成绩信息。我们想要找出每个学生的最高成绩和最低成绩,可以使用以下语句实现:
```
SELECT
name,
MAX(CASE WHEN subject = 'Math' THEN score ELSE 0 END) AS max_math_score,
MAX(CASE WHEN subject = 'English' THEN score ELSE 0 END) AS max_english_score,
MIN(CASE WHEN subject = 'Math' THEN score ELSE 100 END) AS min_math_score,
MIN(CASE WHEN subject = 'English' THEN score ELSE 100 END) AS min_english_score
FROM
students
GROUP BY
name;
```
上面的语句会将 `students` 表格中的所有学生数据按照姓名进行分组,然后使用 `CASE WHEN` 语句将每个学生的不同科目成绩进行筛选,并使用 `MAX` 和 `MIN` 函数对分组后的数据进行求最大值和最小值。注意,这里使用了 `0` 和 `100` 作为默认值来区分不同科目的成绩,其中 `0` 代表 `Math` 科目的成绩,`100` 代表 `English` 科目的成绩。最后,使用 `GROUP BY` 子句将结果按照学生姓名进行分组。执行以上语句后,将会得到一个包含每个学生的最高和最低成绩的表格。
阅读全文