在 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企服之家,中国第一个企服评测及商务社交产业平台。 |