mysql怎么做連表查詢,mysql 連表

mysql兩表聯合查詢

兩個表需要有共同的字段用來做對應關系,假定表a 的ab字段和表b 的bc字段意義是一樣的:

成都創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于做網站、成都網站制作、將樂網絡推廣、微信小程序開發、將樂網絡營銷、將樂企業策劃、將樂品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯為所有大學生創業者提供將樂建站搭建服務,24小時服務熱線:028-86922220,官方網址:m.kartarina.com

新建兩張表:

表a:ab ac ad

1 1 2

2 3 4

3 5 6

表b: bc bd be

1 7 8

3 9 10

4 11 12

(此時這樣建表只是為了演示連接SQL語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。)

一、外連接

外連接可分為:左連接、右連接、完全外連接。

1、左連接 left join 或 left outer join

SQL語句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd執行結果以ab行為準:

表:ab ac ad bc bd be

1 1 2 1 7 8

2 3 4 0 0 0

3 5 6 3 9 10

其中b表bc第二行的值在ab中沒有對應的所以左連無法找出來,同理右連會變成這樣:

SQL語句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a left join 表b on 表a.ab=表b.bd執行結果以bd行為準:

表:ab ac ad bc bd be

1 1 2 1 7 8

3 5 6 3 9 10

0 0 0 4 11 12

左外連接包含left join左表所有行,如果左表中某行在右表沒有匹配,則結果中對應行右表的部分全部為0.

注:此時我們不能說結果的行數等于左表數據的行數。當然此處查詢結果的行數等于左表數據的行數,因為左右兩表此時為一對一關系。

右外連接包含right join右表所有行,如果左表中某行在右表沒有匹配,則結果中對應左表的部分全部為0。

注:同樣此時我們不能說結果的行數等于右表的行數。當然此處查詢結果的行數等于左表數據的行數,因為左右兩表此時為一對一關系。

3、完全外連接 full join 或 full outer join

SQL語句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a full join 表b on 表a.ab=表b.bd執行結果:

表:ab ac ad bc bd be

1 1 2 1 7 8

2 3 4 0 0 0

3 5 6 3 9 10

0 0 0 4 11 12

完全外連接包含full join左右兩表中所有的行,如果右表中某行在左表中沒有匹配,則結果中對應行右表的部分全部為0,如果左表中某行在右表中沒有匹配,則結果中對應行左表的部分全部為0。

二、內連接 join 或 inner join

SQL語句:select 表a.ab,表a.ac,表a.ad,表b.bc,表b.bd,表b.be from 表a inner join 表b on 表a.ab=表b.bdinner join 是比較運算符,只返回符合條件的行。

表:ab ac ad bc bd be

1 1 2 1 7 8

3 5 6 3 9 10

三、交叉連接 cross join

1.概念:沒有 WHERE 子句的交叉聯接將產生連接所涉及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等于笛卡爾積結果集的大小。

表a: ab

星期一

星期二

星期三

表b: cd

張三

李四

王五

SELECT a.ab,b.cd FROM 表a CROSS JOIN 表b

ab cd

星期一 張三

星期一 李四

星期一 王五

星期二 張三

星期二 李四

星期二 王五

星期三 張三

星期三 李四

星期三 王五

MySQL聯表查詢的索引使用

一共3張表 knowledge , knowledge_question , knowledge_answer ,數據在 6000~10000 之間。

執行的語句:

執行時間約 10分鐘 ,查看執行計劃如下:

全部都是全表掃描,根據MySQL聯表查詢的算法 Nested-Loop Join ,MySQL查詢的結果集是3張表的笛卡爾積,所以效率特別低。

耗時變成 20毫秒

給Where條件建立索引,并不一定會使用。

比如:在表 knowledge 的字段 update 上建立索引 idx_time :

結果執行上來看,并沒有使用索引 idx_time 。

如果where條件從 k.update_time'2019-01-03 12:00:00' 修改為 k.update_time='2019-01-03 12:00:00' (從 變成 = )

則會使用索引 idx_time

在建立索引的時候,會遇到 Table Metadata Lock 的問題,可以先 show processlist ,找到占用表鎖的連接,然后 kill 。

如何使MYSQL多表聯合查詢?

select * from 表1 inner join 表2 on 關聯條件

select * from 表1 left outer join 表2 on 關聯條件

select * from 表1 right outer join 表2 on 關聯條件

select * from 表1 cross join 表2 on 關聯條件

MYSQL查詢

查詢平均成績大于70分的同學的學號和平均成績

SELECT s.id,AVG(sc.score) FROM student s,studentcourse sc WHERE s.id=sc.student_id GROUP BY s.id HAVING ?AVG(sc.score)70;

查詢所有同學的學號、姓名、選課數、總成績

SELECT id,NAME

FROM student

WHERE id NOT IN (SELECT student_id

FROM studentcourse

WHERE course_id IN (SELECT course.id

FROM teacher,course

WHERE teacher.id=course.teacher_id

AND teacher.name=’關羽’));

查詢學生信息和平均成績

SELECT s.id,s.name,s.city,s.age, c.name,sc.score,t.name

FROM student s,studentcourse sc,course c,teacher t

WHERE s.id=sc.student_id AND c.id=sc.course_id AND c.teacher_id=t.id GROUP BY s.id;?

文章標題:mysql怎么做連表查詢,mysql 連表
網站路徑:http://m.kartarina.com/article12/hegjgc.html

成都網站建設公司_創新互聯,為您提供網站設計定制開發關鍵詞優化搜索引擎優化面包屑導航用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 中文字幕久久精品无码| 久久激情亚洲精品无码?V| 国产亚洲人成无码网在线观看| 无码国产成人午夜电影在线观看| 中文字幕无码无码专区| 永久免费av无码网站大全| 亚洲AV无码一区东京热| 无码精品A∨在线观看无广告| 午夜不卡无码中文字幕影院| 亚洲一级特黄无码片| 无码国产精品一区二区免费式影视| 高清无码一区二区在线观看吞精| 91精品久久久久久无码 | 亚洲精品午夜无码电影网| 久久无码国产专区精品| 成人无码一区二区三区| 日韩经典精品无码一区| 亚洲成av人片不卡无码| 国产成人午夜无码电影在线观看| 亚洲精品人成无码中文毛片| 亚洲a∨无码精品色午夜| JAVA性无码HD中文| 亚洲中文字幕无码av| 日韩av无码一区二区三区| 亚洲av永久无码精品古装片| 亚洲一本大道无码av天堂| 一本之道高清无码视频| 四虎成人精品无码永久在线| 无码熟妇人妻AV影音先锋| 亚洲中文字幕无码爆乳| 日韩成人无码一区二区三区| 亚洲国产成人精品无码区花野真一| 免费A级毛片无码无遮挡内射| 精品无码日韩一区二区三区不卡 | 亚洲熟妇无码一区二区三区| 无码国产色欲XXXXX视频| 久久久久亚洲AV片无码| 丝袜无码一区二区三区| 曰批全过程免费视频在线观看无码| 国产成人无码a区在线视频| 亚洲午夜福利精品无码|