语法:
我们来看一下右连接的语法
SELECT
*
FROM
TableA RIGHT JOIN
TableB
ON condition;
参考上一节的例子,现在我们想用右连接查询课程对应的老师(不管课程有没有对应的老师,都要展示课程信息),那么我们应该这么写SOL:
SELECT
*
FROM
ykd_teacher
RIGHT JOIN ykd_course ON ykd_teacher.id = ykd_course.teacher_id;
[我们可以看到,因为每一个id都有匹配的数据,所以右连接查询得到的数据和左连接是一样的。]
在实际的应用中,完全匹配的情况比较少,我们手动执行一下下面的UPDATE语句,将两张表的关联id变得不完全一致:
UPDATE ykd_course
SET teacher_id= 5
WHERE teacher_id= 1;
我们再手动执行一下下面两个关联查询:
SELECT
*
FROM
ykd_teacher
LEFT JOIN ykd_course ON ykd_teacher.id = ykd_course.teacher_id;
SELECT
*
FROM
ykd_teacher
RIGHT JOIN ykd_course ON ykd_teacher.id = ykd_course.teacher_id;
我们可以看到查询的结果因为左连接或者右连接不一致,当左连接时,会返回左表的所有数据,当右连接时会返回右表的所有数据。
多表关联查询
在实际应用中,我们有时候会对三张表以上进行关联查询,在这种情况下,我们往往会选中一张表作为主表,以它为基准,进行LEFTJOIN 或 RIGHT JOIN 查询。
[只会使用 A LEFT JOIN B \A LEFT JOINC。
不要出现A RIGHT JOIN B \ B RIGHT JOINC这种情况 ]
语法:
SELECT
*
FROM
TableA
LEFT JOIN TableB ON conditionA
LEFT JOIN TableC ON conditionB;
比如我们对ykd_student,ykd_course,ykd_teacher这三张表进行关联查询,我们的应该这么写SQL:
SELECT
*
FROM
ykd_course
LEFT JOIN ykd_student ON ykd_student.course_id = ykd_course.id
LEFT JOIN ykd_teacher on ykd_course.teacher_id = ykd_teacher.id;
ABC多表查询的本质是A先和B关联查询,然后再和C进行关联查询更多表格的场景中,原理也是一致的。
标签:5.2,JOIN,ykd,连接,teacher,course,查询,id From: https://blog.csdn.net/Mtf520/article/details/142319473