更新时间:2026-07-03 GMT+08:00
分享

左半连接

功能描述

左半连接(LEFT SEMI JOIN)用来查看左表中符合 JOIN 条件的记录。左半连接只返回左表中的记录,不返回右表的列。

语法格式

SELECT attr_expr_list FROM table_reference
  LEFT SEMI JOIN table_reference ON join_condition;

参数说明

参数

说明

attr_expr_list

查询列表达式列表,指定需要返回的列。所涉及的字段只能是左表中的字段,否则会出错。

table_reference

进行连接的表名或子查询。必须是已存在的表,否则会出错。

LEFT SEMI JOIN

左半连接关键字,只显示左表中满足 JOIN 条件的记录。

join_condition

连接条件,通常为两表之间列的等值比较表达式。

ON

指定连接条件的关键字。

注意事项

  • 所要进行 JOIN 连接的表必须是已经存在的表,否则会出错。
  • attr_expr_list 中所涉及的字段只能是左表中的字段,否则会出错。
  • 左半连接与左外连接的区别:左半连接只返回左表中符合 JOIN 条件的记录,而左外连接返回左表所有的记录,匹配不上 JOIN 条件的记录右表列返回 NULL。
  • 左半连接的效果等价于 WHERE ... IN 或 WHERE EXISTS 子查询。

示例

返回选课学生的姓名及其所选的课程编号。

SELECT student_info.name, student_info.courseId FROM student_info LEFT SEMI JOIN course_info ON student_info.courseId = course_info.courseId;

等价写法(使用 WHERE IN):

SELECT name, courseId FROM student_info WHERE courseId IN (SELECT courseId FROM course_info);

等价写法(使用 WHERE EXISTS):

SELECT name, courseId FROM student_info WHERE EXISTS (SELECT 1 FROM course_info WHERE student_info.courseId = course_info.courseId);

相关文档