一、需求
1、已知
- 表:student
- 表字段:id(主鍵ID),score(考試分數),student_name(學生姓名)
2、求出
每個學生的考試次數,考試分數大於60分的次數
二、表數據
把李四圈起來,讓大家更好的區分這3位同學的分數。
三、查詢語句
SELECT
#student_name取b表的(如果取的a表的student_name,該同學又恰好沒一個及格,student_name就爲NULL了)
b.`student_name`,
b.total_number,
a.number
FROM
(
SELECT
`student_name`,
count(id) AS number
FROM
`student`
WHERE
score > 60
GROUP BY
`student_name`
) AS a
#右鏈接,以考試總次數數據爲準,如果用JOIN或者LEFT JOIN,王五這條數據不滿足score > 60,就只會查出2條數據;
#當然,如果把b表連a表,就可以用LEFT JOIN了,JOIN還是不能用
RIGHT JOIN (
SELECT
`student_name`,
count(id) AS total_number
FROM
`student`
GROUP BY
`student_name`
) AS b ON a.`student_name` = b.`student_name`