MySQL——联表查询JoinON详解

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

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

 JOIN  的重要类型及特点:

1.  INNER JOIN (内毗连):

- 这是最常见的毗连类型之一。
- 只有当两个表中指定的毗连列的值相匹配时,才会返回行。
- 即返回两个表的交集部门。
- 例如,假设有两个表  students (包罗  student_id  和  student_name  列)和  courses (包罗  course_id  和  student_id  列),要获取选修了课程的门生信息,可以这样写:

  1. SELECT s.student_id,
  2. s.student_name, c.course_id
  3. FROM students s INNER JOIN
  4. courses c ON s.student_id =
  5. c.student_id;
复制代码

2.  LEFT JOIN (左毗连):

- 以左表为根本,返回左表中的全部行。
- 对于右表,仅返回与左表毗连列匹配的行。如果右表中没有匹配的行,则对应右表的列值为  NULL 。
- 好比,若要获取全部门生及其选修课程的信息,纵然某些门生没有选修课程也要显示出来,可以这样写:

  1. SELECT s.student_id,
  2. s.student_name, c.course_id
  3. FROM students s LEFT JOIN
  4. courses c ON s.student_id =
  5. c.student_id;
复制代码

3.  RIGHT JOIN (右毗连):

- 与左毗连相反,以右表为根本。
- 返回右表中的全部行,对于左表,仅返回与右表毗连列匹配的行。若左表无匹配,则对应左表的列值为  NULL 。
- 示例:假假想获取全部课程及其选修门生的信息,纵然某些课程没有门生选修也要显示,可以这样写:

  1. SELECT s.student_id,
  2. s.student_name, c.course_id
  3. FROM students s RIGHT JOIN
  4. courses c ON s.student_id =
  5. c.student_id;
复制代码


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

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

  1. SELECT s.student_id,
  2. s.student_name, c.course_id
  3. FROM students s INNER JOIN courses
  4. c ON s.student_id = c.student_id
  5. AND s.age > 18;
复制代码


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

  1. SELECT s.student_id,
  2. s.student_name, c.course_id
  3. FROM students s INNER JOIN courses
  4. c ON s.student_id = c.student_id
  5. AND s.age > 18 AND c.course_name =
  6. 'Math';
复制代码


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

水军大提督

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表