6-SQL聯(lián)結(jié)查詢(xún)(子查詢(xún)褐奥、組合查詢(xún)、聯(lián)結(jié)查詢(xún))

說(shuō)明

▍ 子查詢(xún):嵌套在其他查詢(xún)中的查詢(xún)翘簇;

▍ 組合查詢(xún)(復(fù)合查詢(xún) / 并操作):執(zhí)行多次查詢(xún)撬码,多條select語(yǔ)句,并將結(jié)果作為單個(gè)查詢(xún)結(jié)果返回版保;

  • union all:包含重復(fù)行;
  • union:取消重復(fù)行;

▍ 聯(lián)結(jié)查詢(xún)


image.png
  • inner join 內(nèi)聯(lián)結(jié)
    保留兩邊表都有的記錄呜笑;
  • left join 左聯(lián)結(jié)
    保留左邊表的信息,右邊表沒(méi)有匹配上的字段顯示為null找筝;
  • right join 右聯(lián)結(jié)
    保留右邊表的信息蹈垢,左邊表沒(méi)有匹配上的字段顯示為null慷吊;
  • full join 全聯(lián)結(jié):
    左右兩邊表的信息都保留袖裕,沒(méi)有匹配上的字段顯示為null;

練習(xí)

表例

--1溉瓶、查詢(xún)來(lái)自安徽省的學(xué)生都在哪些班級(jí)(用子查詢(xún)做)急鳄;字段:學(xué)號(hào),姓名堰酿,省份疾宏,班級(jí);

select
distinct
stu_id as 學(xué)號(hào)
,name as 姓名
,from_where as 省份
,(select class from class_info where student_info.stu_id=class_info.stu_id ) as 班級(jí)

from student_info
where from_where='安徽省';

--方法二

select
distinct
stu_id as 學(xué)號(hào)
,name as 姓名
,'安徽省' 
,class

from class_info
where stu_id in
(
    --查詢(xún)來(lái)自安徽省的學(xué)生ID
    select 
    distinct stu_id

    from student_info
    where from_where='安徽省'
);

--2触创、查詢(xún)每個(gè)班級(jí)考試不及格的學(xué)生信息(用子查詢(xún)做)坎藐;字段:班級(jí),學(xué)號(hào),姓名岩馍,學(xué)科碉咆,不及格分?jǐn)?shù);

select 
(select class from class_info where score_info.stu_id=class_info.stu_id ) as 班級(jí)
,stu_id as 學(xué)號(hào)
,name as 姓名
,subject as 學(xué)科
,score as 不及格分?jǐn)?shù)

from score_info
where score<60
order by 班級(jí);

--3蛀恩、查詢(xún)每個(gè)班級(jí)考試不及格的學(xué)生人數(shù)(子查詢(xún)+聚合函數(shù))疫铜;字段:專(zhuān)業(yè),班級(jí)双谆,不及格人數(shù)壳咕;

select
distinct
major
,class
,(select count(if(score<60,stu_id,NULL)) from score_info where score_info.stu_id=class_info.stu_id) as 不及格人數(shù)

from class_info
group by major,class
order by major,class;

--方法2

major
,class
,count(distinct stu_id)

from class_info
where stu_id in
(
    select
    distinct stu_id

    from score_info
    where score<60
)
group by 1,2;

--4、查詢(xún) 電氣工程專(zhuān)業(yè) 和 糧食專(zhuān)業(yè) 的學(xué)生信息:姓名顽馋;
--簡(jiǎn)單查詢(xún)的方式;

select name

from student_info
where major in('電氣工程專(zhuān)業(yè)','糧食專(zhuān)業(yè)');

--組合查詢(xún)的方式:去重谓厘、不去重的區(qū)別;
--union all:包含重復(fù)行;
--union:取消重復(fù)行;

f1.name

from
(
    select
    name

    from student_info
    where major='糧食專(zhuān)業(yè)'  

    union all

    select
    name

    from student_info
    where major='電氣工程專(zhuān)業(yè)'    
)f1;

--5、查詢(xún)物理和政治考試的學(xué)生信息(用組合查詢(xún)做)寸谜;字段:科目庞呕,學(xué)號(hào),姓名程帕,分?jǐn)?shù)住练;

select
f1.subject
,f1.stu_id
,f1.name
,f1.score

from 
(
    select
    distinct
    subject
    ,stu_id
    ,name
    ,score

    from score_info
    where subject='物理'

    union all

    select
    subject
    ,stu_id
    ,name
    ,score

    from score_info
    where subject='政治'

)f1;

--6、查詢(xún)物理和政治考試的學(xué)生人數(shù)(組合查詢(xún)+聚合函數(shù))愁拭;字段:科目讲逛,考試人數(shù);

select 
f1.*

from
(
    select
    subject 
    ,count(distinct stu_id) 

    from score_info
    where subject='政治'
    group by 1

    union all

    select
    subject
    ,count(distinct stu_id)

    from score_info
    where subject='物理'
    group by 1
)f1;

--第二部分:聯(lián)結(jié)查詢(xún)
--1岭埠、查詢(xún)來(lái)自安徽省的學(xué)生都在哪些班級(jí)盏混;字段:學(xué)號(hào),姓名惜论,省份许赃,班級(jí);

select 
distinct
f1.stu_id
,f1.name
,f1.from_where
,f2.class

from
(
    select
    distinct
    stu_id
    ,name
    ,from_where

    from student_info
    where from_where='安徽省'

)f1

inner join
(
    select
    distinct
    stu_id
    ,class
    ,name

    from class_info
)f2 on f1.stu_id=f2.stu_id;

--2馆类、查詢(xún)每個(gè)班級(jí)沒(méi)有參加考試的學(xué)生信息混聊;字段:班級(jí),學(xué)號(hào)乾巧,姓名句喜;

select
distinct
f1.class
,f1.stu_id
,f1.name

from
(
    --全部學(xué)生信息
    select
    distinct
    stu_id
    ,name
    ,class

    from class_info
)f1

left join
(
    --參加了考試的學(xué)生id
    select
    distinct
    stu_id

    from student_info
)f2 on f1.stu_id=f2.stu_id
--篩選null
where f2.stu_id is null;

--3、查詢(xún)每個(gè)班級(jí)考試的平均分(聯(lián)結(jié)+聚合函數(shù))沟于;字段:學(xué)院咳胃,專(zhuān)業(yè),班級(jí)旷太,平均分展懈;

select 
f1.college
,f1.major
,f1.class
,avg(f2.score)

from
(
    select
    distinct
    college
    ,major
    ,class
    ,stu_id

    from class_info
)f1 

inner join
(
    select
    distinct
    stu_id
    ,score

    from score_info

)f2 on f1.stu_id=f2.stu_id
group by f1.college,f1.major,f1.class
order by f1.college,f1.major,f1.class;

--4、查詢(xún)每個(gè)班級(jí)考試不及格的人數(shù)(聯(lián)結(jié)+聚合函數(shù));字段:班級(jí)存崖,不及格人數(shù)榄攀;

select 
f1.class as 班級(jí)
,count(f2.stu_id) as 不及格人數(shù)

from
(
    select
    distinct
    stu_id
    ,class

    from class_info

)f1

inner join
(

    select
    distinct
    stu_id

    from score_info
    where score<60
)f2 on f1.stu_id=f2.stu_id
group by f1.class
order by f1.class;

--5、查詢(xún)每個(gè)班級(jí)金句,不同省份的人數(shù)(聯(lián)結(jié)+聚合函數(shù))檩赢;字段:班級(jí),省份违寞,人數(shù)贞瞒;

select
f1.class as 班級(jí)
,f2.from_where as 省份
,count(f1.stu_id) as 人數(shù)

from
(
    select
    distinct
    class
    ,stu_id

    from class_info

)f1

inner join
(
    select
    distinct
    from_where
    ,stu_id

    from student_info
)f2 on f1.stu_id=f2.stu_id
group by f1.class,f2.from_where
order by f1.class,f2.from_where;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趁曼,隨后出現(xiàn)的幾起案子军浆,更是在濱河造成了極大的恐慌,老刑警劉巖挡闰,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乒融,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摄悯,警方通過(guò)查閱死者的電腦和手機(jī)赞季,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奢驯,“玉大人申钩,你說(shuō)我怎么就攤上這事”窀螅” “怎么了撒遣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)管跺。 經(jīng)常有香客問(wèn)我义黎,道長(zhǎng),這世上最難降的妖魔是什么豁跑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任廉涕,我火速辦了婚禮,結(jié)果婚禮上贩绕,老公的妹妹穿的比我還像新娘火的。我一直安慰自己壶愤,他們只是感情好淑倾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著征椒,像睡著了一般娇哆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天碍讨,我揣著相機(jī)與錄音治力,去河邊找鬼。 笑死勃黍,一個(gè)胖子當(dāng)著我的面吹牛宵统,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播覆获,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼马澈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了弄息?” 一聲冷哼從身側(cè)響起痊班,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摹量,沒(méi)想到半個(gè)月后涤伐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缨称,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年凝果,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睦尽。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡豆村,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骂删,到底是詐尸還是另有隱情掌动,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布宁玫,位于F島的核電站粗恢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏欧瘪。R本人自食惡果不足惜眷射,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望佛掖。 院中可真熱鬧妖碉,春花似錦、人聲如沸芥被。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拴魄。三九已至冗茸,卻和暖如春席镀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夏漱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工豪诲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挂绰。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓屎篱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親葵蒂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芳室,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容