MySQL - 連接詳解

student 表

id name
1 小明
2 小花
3 小黃

score 表

id student_id score
1 2 10
2 3 20
3 4 30

交叉連接
cross join
交叉連接可不帶 on 子句
把表 student 和表 score 的數(shù)據(jù)進(jìn)行一個N*M的組合,即笛卡爾積
如本例會產(chǎn)生3*3=9條記錄

//用法1
select * from student,score; 
//用法2;
select * from student cross join score;

查詢結(jié)果:

id name id student_id score
1 小明 1 2 10
2 小花 1 2 10
3 小黃 1 2 10
1 小明 2 3 20
2 小花 2 3 20
3 小黃 2 3 20
1 小明 3 4 30
2 小花 3 4 30
3 小黃 3 4 30

內(nèi)連接
inner join
產(chǎn)生student表和score表的交集
內(nèi)連接可不帶 on 子句,當(dāng)不帶 on子句時相當(dāng)于 交叉連接產(chǎn)生的結(jié)果是 student 和 score 的交集

select * from student as a inner join score as b on a.id=b.student_id;

查詢結(jié)果:

id name id student_id score
2 小花 1 2 10
3 小黃 2 3 20

外連接
外連接必須帶 on 子句

  • 左連接
    left join
    產(chǎn)生student表的完全集,而 score表中匹配的則有值,沒有匹配的則以null值取代
select * from student as a left join score as b on a.id=b.student_id;

查詢結(jié)果:

id name id student_id score
2 小花 1 2 10
3 小黃 2 3 20
1 小明 NULL NULL NULL
  • 右連接
    right join
    產(chǎn)生score表的完全集,而 student表中匹配的則有值,沒有匹配的則以null值取代
select * from student as a right join score as b on a.id=b.student_id;

查詢結(jié)果:

id name id student_id score
2 小花 1 2 10
3 小黃 2 3 20
NULL NULL 3 4 30

USING

USING是連接中on 子句的簡寫形式
當(dāng)on子句中關(guān)聯(lián)表的字段相同時可以使用USING
on t1.a = t2.a and t1.b = t2.b 等效于 using(a,b)
使用 * 查詢兩個表的所有字段時 using中的字段只顯示一次

select * from student as a left join score as b using(id);

查詢結(jié)果:

id name student_id score
1 小明 2 10
2 小花 3 20
3 小黃 4 30
select * from student as a left join score as b on a.id=b.id;

查詢結(jié)果:

id name id student_id score
1 小明 1 2 10
2 小花 2 3 20
3 小黃 3 4 30

當(dāng)查詢兩個表的共同字段,并且該字段在using子句中時,不會報錯,但在on會引起歧義報錯

select id,name from student as a left join score as b using(id);

查詢結(jié)果:

id name
1 小明
2 小花
3 小黃
select id,name from student as a left join score as b on a.id=b.id;

查詢結(jié)果:
[Err] 1052 - Column 'id' in field list is ambiguous

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容