2009-10-03 58 views
0

量当你使用mysql,你可以这样做:MYSQL得到的结果

SELECT * FROM student WHERE teacher_id = 1 

...那么你得到的结果的数量,并与结果。但我只想要结果的数量,但对每个老师都是如此。

是否有可能在mysql中像sizeof或其他?

此外,如果有教师没有学生是真的,那里没有列表?还是它不得不说0?

回答

3

你的意思是你想要每个老师的学生人数?你可以使用类似这样的东西:

SELECT teacher_id, count(*) AS student_count 
FROM student 
GROUP BY teacher_id 

这不包括没有任何学生的教师。包括他们的结果,你需要使用JOIN(假设你有一个teacher表):

SELECT teacher.id, sum(if(student.id IS NULL, 0, 1)) AS student_count 
FROM teacher 
    LEFT JOIN student ON student.teacher_id=teacher.id 
GROUP BY teacher.id 
+0

是否有没有学生在教师是确实没有在列表中?还是它不得不说0? – matthy 2009-10-03 17:50:01

1
SELECT teacher_id, count(*) as count FROM student GROUP BY teacher_id; 
1

用途:

SELECT t.teacher_id, 
      IFNULL(ns.num_students, 0) 
    FROM TEACHERS t 
LEFT JOIN (SELECT s.teacher_id, 
        COUNT(s.student_id) 'num_students' 
      FROM STUDENTS s 
     GROUP BY s.teacher_id) ns ON ns.teacher_id = t.teacher_id