vue实现查询多条记录_sql:多表查询
生活随笔
收集整理的這篇文章主要介紹了
vue实现查询多条记录_sql:多表查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1進(jìn)階9:聯(lián)合查詢
關(guān)鍵詞union聯(lián)合、合并:將多條查詢語句的結(jié)果合并成一個結(jié)果
語法:查詢語句1
union
查詢語句2
union
...
應(yīng)用場景:當(dāng)我們要查詢的結(jié)果來自于多個表,且多個表之間沒有連接關(guān)系,但是查詢的信息一致
特點(diǎn):要求多條查詢語句的查詢列數(shù)是一致的★
要求多條查詢語句的每一列的順序和類型是一致的
使用union關(guān)鍵字默認(rèn)是去重的,因此可以使用union all包含所有的信息
引入的案例:查詢course表1和course表2的課程號和課程名稱
select course_id,course_name from course1
union all
select course_id,course_name from course2;
2.表的聯(lián)接
表的連接類型以A表和B表為例對不同的連接方式進(jìn)行顯示連接結(jié)果2.1交叉聯(lián)結(jié)cross join 又稱之為笛卡兒積,即假設(shè)表1有m行,表2有n行,交叉連接的結(jié)果是m*n行, 在實(shí)際中運(yùn)用較少。 2.2內(nèi)聯(lián)結(jié) inner join 也稱之為等值連接,即查找兩張表中共同存在的數(shù)據(jù),即兩張表的交集,韋恩圖如下: select a.*,b.* from A表 inner join B表 on a.name=b.name; 連接結(jié)果: 2.3左聯(lián)結(jié) left join (1)左連接是左邊表是主表,匹配右邊的表是從表。主表的所有數(shù)據(jù)都有顯示出來,右邊的表數(shù)據(jù)只顯示共同有的那部分,沒有對應(yīng)的部分只能補(bǔ)空顯示(以null顯示),左邊表就是指放在left join的左邊的表.韋恩圖: select a.*,b.*from A表 left join B表 on a.name=b.name; 返回結(jié)果:(2)若返回只有左表的記錄,但是并不包括左表和右表所共有的 select a.*,b.* from A表 left join B表 on a.name=b.name where b.id is null; 韋恩圖和返回的結(jié)果集如下:2.4右聯(lián)結(jié) right join 右連接正好是和左連接相反的,這里的右邊也是相對right join來說的,在這個右邊的表就是右表 ,即主表,返回結(jié)果是右表有,左表顯示共同的部分,沒有的以null顯示。 select a.*,b.*from A表 right join B表 on a.name=b.name; 若返回只有右表的記錄,但是并不包括左表和右表所共有的 select a.*,b.* from A表 left join B表 on a.name=b.name where a.id is null; 韋恩圖 3.5全聯(lián)結(jié) full join 由于mysql不支持full join,大多數(shù)可以通過union all實(shí)現(xiàn),即左連接+右連接+去重實(shí)現(xiàn)練習(xí): #1.查詢所有學(xué)生的學(xué)號、姓名、選課數(shù)、總成績 SELECT a.stu_id,stu_name,COUNT(課程號) AS 選課數(shù),SUM(成績)AS 總成績 FROM student a INNER JOIN score b ON a.stu_id=b.stu_id GROUP BY a.學(xué)號; #2.查詢平均成績大于85的所有學(xué)生的學(xué)號、姓名和平均成績 step1.先查詢平均成績大于85的學(xué)生學(xué)號 SELECT stu_id,AVG(score) AS ag FROM score WHERE AVG(score)>85 GROUP BY stu_id; step2.再查詢滿足第一步的學(xué)生的學(xué)號、姓名、平均成績 SELECT a.stu_id,a.stu_name,b.ag FROM srudent a INNER FROM (SELECT stu_id,AVG(score) AS ag FROM score WHERE AVG(score)>85 GROUP BY stu_id)b ON a.stu_id=b.stu_id; 方式2:采用左連接 select a.stu_id,a.stu_name,b.ag from student a left join score bgroup by a.stu_id having b.ag>85;3.case表達(dá)式
case when 條件1 then 要顯示的值1或語句1;when 條件2 then 要顯示的值2或語句2;....else 條件n then 要顯示的值n或語句nend 案例:查詢出每門課程的及格人數(shù)和不及格人數(shù) SELECT course_id, SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END)AS 及格人數(shù), SUM(CASE WHEN score<=60 THEN 1 ELSE 0 END)AS 不及格人數(shù) FROM score GROUP BY course_id; #案例2:使用分段函數(shù)[100-85],[85-70],[<60]來統(tǒng)計各科成績,分別統(tǒng)計各分?jǐn)?shù)段人數(shù)、課程號和課程名稱 SELECT a.course_id,a.course_name, SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS '[100,85]', SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS '[85-70]', SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS '[<60]' FROM score a INNER FROM course b ON a.course_id=b.course_id GROUP BY a.course_id,b.course_name;練習(xí):
總結(jié)
以上是生活随笔為你收集整理的vue实现查询多条记录_sql:多表查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学会用电脑刻录光盘苹果电脑如何刻录光盘
- 下一篇: 在苹果Mac电脑中如何将键盘当作鼠标使用