天天看點

MySQL聯表查詢聯表查詢(JOIN ON)

聯表查詢(JOIN ON)

/*
1.分析需求,分析查詢的字段來自哪些表, student表,result表(連接配接查詢)
2.确定使用哪種連接配接查詢?7種
3.确定交叉點(這兩個表中哪個資料是相同的)
4.判斷條件:學生表中的 studentNO = 成績表的 studentNO
*/
SELECT s.studentNO,studentName,subjectNO,studentResult --查詢的字段
FROM student AS s
INNER JOIN result AS r--确定使用的連接配接查詢方式(内查詢)
WHERE s.studentNO = r.studentNO--确定交叉點,判斷條件
           

注意:

1.确定需求中查詢的字段的時候,其中交叉字段必須聲明屬于哪個表,避免發生表述不明的錯誤,如s.studentNO,表述該字段屬于student表

2.通過AS起别名,進而友善使用,AS也可以省略

3.在JOIN條件下,也可以使用ON來聲明判斷條件

join (連接配接的表) on (判斷條件) 連接配接查詢

where 等值查詢

SELECT s.studentNO,studentName,subjectNO,studentResult --查詢的字段
FROM student s
RIGHT JOIN result r--确定使用的連接配接查詢方式(右查詢)
ON s.studentNO = r.studentNO--确定交叉點,判斷條件
           

JOIN 核心

操作 描述
INNER JOIN 如果表中至少有一個比對,就傳回行
LEFT JOIN 會從左表中傳回所有的值,即使右表中沒有比對
RIGHT JOIN 會從右表中傳回所有的值,即使左表中沒有比對

查詢缺考的同學

SELECT s.studentNO,studentName,subjectNO,studentResult --查詢的字段
FROM student s
LEFT JOIN result r--确定使用的連接配接查詢方式(右查詢)
ON s.studentNO = r.studentNO--确定交叉點,判斷條件
WHERE studentResult IS NULL--缺考的條件
           

三張表聯表查詢

/*
1.分析需求,分析查詢的字段來自哪些表,student表,result表,subject表(連接配接查詢)
2.确定使用哪種連接配接查詢?7種
3.确定交叉點(這兩個表中哪個資料是相同的)
4.判斷條件:學生表中的 studentNO = 成績表的 studentNO
*/
SELECT s.studentNO,studentName,subjectName,studentResult
FROM student s
RIGHT JOIN result r
ON s.studentNO = r.studentNO
INNER JOIN subject sub
ON r.subjectNO = sub.subjectNO

           

注意:

我要查詢哪些資料 SELECT …

從哪幾張表中查詢,FROM 表XXX JOIN 連接配接的表 ON 交叉條件

多表查詢就先查詢兩張表,然後慢慢增加

繼續閱讀