SQL--查詢"01"課程比"02"課程成績高的學生的信息及課程分數

--以本例子爲例,先介紹下幾種常用的表連接,本例只用到left join,其它自己可嘗試----測試下:
--inner join 內連接,結果是兩個表都包含Sid的行;
--left join 左連接,結果是以左表的Sid爲準,右表沒有的爲空值null
--right join 右連接,結果是以右表的Sid爲準,左表沒有的爲空值null
--full outer join 全外連接,結果是包含二表數據

例子:查詢"01"課程比"02"課程成績高的學生的信息及課程分數
--1、第一種方法:左連接,查詢同時存在'01'課程和'02'課程的學生信息,然後再進行---比較, isnull用法,如果score有值則返回score,如果score爲null則返回0
select a.*,b.score [課程'01'的分數],c.score [課程'02'的分數] from Student a
left join SC b on a.Sid=b.Sid and b.Cid='01'
left join SC c on a.Sid=c.Sid and c.Cid='02'
where b.score>isnull(c.score,0)

--2、第二種寫法
select a.* , b.score [課程'01'的分數],c.score [課程'02'的分數] from Student a , SC b , SC c
where a.Sid = b.Sid and a.Sid = c.Sid and b.Cid = '01' and c.Cid = '02' and b.score > c.score

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章