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