MySQL - 选择值还是返回零?

时间:2016-11-10 22:37:12

标签: mysql

我有两张桌子:

1) 学生

ID,  NAME,   LASTNAME,  CLASS, ...and more columns (not important)...
1,   Peter,  Fish,      4A
2,   Johnny, Rock,      4A
3,   Tony,   Martin,    4B
4,   David,  Blur,      4C    
5,   Joe,    Black,     4B

2) MATH_CLASS

STUDENT_ID,  POINTS    
1,           15
1,           20  
2,           30    
3,           11
3,            5
4,            3

现在,用

"SELECT ID, NAME, LASTNAME, SUM(POINTS) FROM STUDENTS, MATH_CLASS WHERE ID = STUDENT_ID GROUP BY ID"

我可以获得简单的学生名单,然后是他们在MATH_CLASS上的总分。

我需要的是获得的列表甚至包含两个没有MATH_CLASS条目的学生(只有id和名称后面没有任何信息或后跟0)。

任何想法如何解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:2)

你需要的是LEFT JOIN。

SELECT ID, NAME, LASTNAME, SUM(COALESCE(POINTS)) 
FROM STUDENTS LEFT JOIN MATH_CLASS ON ID = STUDENT_ID GROUP BY ID

请注意使用COALESCE来避免结果集中的Null apearing。

顺便说一句,我强烈建议你使用小写表和列名。