SQL子查询为列,其中有多个CALUSE

时间:2018-07-04 04:31:17

标签: mysql sql join subquery

我有三个表School, Grade, Student。表Grade的{​​{1}}列Foreign Key引用了s_id的{​​{1}}列Primary Key,表id的引用为{{ 1}}列School引用表Student的{​​{1}}列Foreign Key。我需要选择school_name,即身高低于170或高于180的学生人数。现在,我编写这样的select查询。

g_id

我必须为每一列使用Primary Key。是否有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:5)

以下使用SUM()聚合器,而MySQL在对值求和以实现所需的输出时将布尔值视为10

SELECT school.id, school.name, SUM(student.height < 170) AS under_170, SUM(student.height > 180) AS over_180
FROM school
INNER JOIN grade ON (school.id = grade.s_id)
INNER JOIN student ON (grade.id = student.g_id)
GROUP BY school.id
相关问题