回顧MySQL查詢語句經典例項2
阿新 • • 發佈:2021-02-02
#查詢平均成績大於等於 60 分的同學的學生編號和學生姓名和平均成績
#分析,我們可以根據學生編號將成績分組,對分組的score求平均值,最後在選取結果中利用AVG函式進行求平均值並判斷是否大於等於60即可
#一般的聯合搜尋
select student.sid,sname,avgScore from student,( select sid, AVG(score) as avgScore from score GROUP BY sid HAVING AVG(score)> 60 )r where student.sid = r.sid;
#左連線
select s.sid,avgSocre,sname from(
select sid, AVG(score) as avgSocre from score
GROUP BY sid
HAVING AVG(score)> 60
)r left join
(select student.sid, student.sname from
student)s on s.sid = r.sid;
#右連線
select student.sid, student.sname, r.avgScore from student right join( select sid, AVG(score) AS avgScore from score GROUP BY sid HAVING AVG(score)> 60 )r on student.sid = r.sid;
#查詢在socre表存在成績的學生資訊
select DISTINCT student.*
from student,score
where student.sid=score.sid
#查詢所有同學的學生編號,學生姓名,選課總數,所有課程的成績綜合
#聯合查詢(不會顯示沒有選課的學生)
#通過join查詢可以顯示沒有選課的學生(沒有選課的學生為NULL)
#查有成績的學生資訊
#exists
select * from student
where exists (select score.sid from score where student.sid = score.sid);
#in
select * from student
where student.sid in (select score.sid from score);