水军大提督 发表于 2024-9-21 16:16:58

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  子句可以机动、高效地从多个表中获取所需的数据,帮助你构建复杂但准确的查询语句来满足各种业务需求。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL——联表查询JoinON详解