MySQL——联表查询JoinON详解

在 MySQL 中, JOIN  操作结合  ON  子句用于实现多表之间的数据关联,以便从多个相关表中获取所需的综合信息。

 JOIN  的主要类型及特点:

1.  INNER JOIN (内连接):

- 这是最常见的连接类型之一。

- 只有当两个表中指定的连接列的值相匹配时,才会返回行。

- 即返回两个表的交集部分。

- 例如,假设有两个表  students (包含  student_id  和  student_name  列)和  courses (包含  course_id  和  student_id  列),要获取选修了课程的学生信息,可以这样写:

SELECT s.student_id,
 s.student_name, c.course_id

FROM students s INNER JOIN
 courses c ON s.student_id = 
c.student_id;

2.  LEFT JOIN (左连接):

- 以左表为基础,返回左表中的所有行。

- 对于右表,仅返回与左表连接列匹配的行。如果右表中没有匹配的行,则对应右表的列值为  NULL 。

- 比如,若要获取所有学生及其选修课程的信息,即使某些学生没有选修课程也要显示出来,可以这样写:

SELECT s.student_id,
 s.student_name, c.course_id

FROM students s LEFT JOIN
 courses c ON s.student_id = 
c.student_id;

3.  RIGHT JOIN (右连接):

- 与左连接相反,以右表为基础。

- 返回右表中的所有行,对于左表,仅返回与右表连接列匹配的行。若左表无匹配,则对应左表的列值为  NULL 。

- 示例:假设想获取所有课程及其选修学生的信息,即使某些课程没有学生选修也要显示,可以这样写:

SELECT s.student_id,

s.student_name, c.course_id

FROM students s RIGHT JOIN

courses c ON s.student_id =

c.student_id;

在使用  ON  子句指定连接条件时,需要清晰地定义两个表中用于关联的列之间的关系。关系可以是相等( = )、大于( > )、小于( < )、大于等于( >= )、小于等于( <= )、不等于( <>  或  != )等。

例如,如果要获取年龄大于 18 岁的学生及其选修课程信息,可以这样写:

SELECT s.student_id,
 s.student_name, c.course_id

FROM students s INNER JOIN courses
 c ON s.student_id = c.student_id 
AND s.age > 18;

此外,还可以使用多个条件进行连接,例如:

SELECT s.student_id, 
s.student_name, c.course_id

FROM students s INNER JOIN courses 
c ON s.student_id = c.student_id
 AND s.age > 18 AND c.course_name = 
'Math';

总之,正确使用  JOIN  和  ON  子句可以灵活、高效地从多个表中获取所需的数据,帮助你构建复杂但准确的查询语句来满足各种业务需求。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值