5.2右连接

语法:


我们来看一下右连接的语法

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进行关联查询更多表格的场景中,原理也是一致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值