日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

vue实现查询多条记录_sql:多表查询

發(fā)布時(shí)間:2024/9/19 vue 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue实现查询多条记录_sql:多表查询 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1進(jìn)階9:聯(lián)合查詢 關(guān)鍵詞union聯(lián)合、合并:將多條查詢語(yǔ)句的結(jié)果合并成一個(gè)結(jié)果 語(yǔ)法:查詢語(yǔ)句1 union 查詢語(yǔ)句2 union ... 應(yīng)用場(chǎng)景:當(dāng)我們要查詢的結(jié)果來(lái)自于多個(gè)表,且多個(gè)表之間沒(méi)有連接關(guān)系,但是查詢的信息一致 特點(diǎn):要求多條查詢語(yǔ)句的查詢列數(shù)是一致的★ 要求多條查詢語(yǔ)句的每一列的順序和類型是一致的 使用union關(guān)鍵字默認(rèn)是去重的,因此可以使用union all包含所有的信息 引入的案例:查詢course表1和course表2的課程號(hào)和課程名稱 select course_id,course_name from course1 union all select course_id,course_name from course2;

2.表的聯(lián)接

表的連接類型以A表和B表為例對(duì)不同的連接方式進(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ù)都有顯示出來(lái),右邊的表數(shù)據(jù)只顯示共同有的那部分,沒(méi)有對(duì)應(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 右連接正好是和左連接相反的,這里的右邊也是相對(duì)right join來(lái)說(shuō)的,在這個(gè)右邊的表就是右表 ,即主表,返回結(jié)果是右表有,左表顯示共同的部分,沒(méi)有的以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ù)可以通過(guò)union all實(shí)現(xiàn),即左連接+右連接+去重實(shí)現(xiàn)練習(xí): #1.查詢所有學(xué)生的學(xué)號(hào)、姓名、選課數(shù)、總成績(jī) SELECT a.stu_id,stu_name,COUNT(課程號(hào)) AS 選課數(shù),SUM(成績(jī))AS 總成績(jī) FROM student a INNER JOIN score b ON a.stu_id=b.stu_id GROUP BY a.學(xué)號(hào); #2.查詢平均成績(jī)大于85的所有學(xué)生的學(xué)號(hào)、姓名和平均成績(jī) step1.先查詢平均成績(jī)大于85的學(xué)生學(xué)號(hào) SELECT stu_id,AVG(score) AS ag FROM score WHERE AVG(score)>85 GROUP BY stu_id; step2.再查詢滿足第一步的學(xué)生的學(xué)號(hào)、姓名、平均成績(jī) 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或語(yǔ)句1;when 條件2 then 要顯示的值2或語(yǔ)句2;....else 條件n then 要顯示的值n或語(yǔ)句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]來(lái)統(tǒng)計(jì)各科成績(jī),分別統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)、課程號(hào)和課程名稱 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:多表查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。