SQL 面试题 目录

SQL 中如何使用 ON 子句指定连接条件?

推荐答案

在 SQL 中,ON 子句用于在 JOIN 操作中指定连接条件。它通常与 INNER JOINLEFT JOINRIGHT JOINFULL JOIN 等连接类型一起使用。ON 子句定义了如何将两个表中的行进行匹配。

示例

-- -------------------- ---- -------
------ 
    ---------------------- 
    --------------- 
    ---------------------------
---- 
    ---------
----- ---- 
    -----------
-- 
    ----------------------- - --------------------------

在这个示例中,ON 子句指定了 employees 表和 departments 表之间的连接条件,即 employees.department_id 必须等于 departments.department_id

本题详细解读

1. ON 子句的作用

ON 子句用于在 JOIN 操作中指定连接条件。它定义了如何将两个表中的行进行匹配。ON 子句通常用于指定两个表之间的外键关系或其他逻辑关系。

2. ON 子句与 WHERE 子句的区别

  • ON 子句用于在 JOIN 操作中指定连接条件,它决定了哪些行会被包含在连接结果中。
  • WHERE 子句用于过滤连接后的结果集,它决定了哪些行会被最终返回。

3. 使用 ON 子句的常见场景

  • 内连接 (INNER JOIN):只返回两个表中匹配的行。
  • 左连接 (LEFT JOIN):返回左表中的所有行,即使右表中没有匹配的行。
  • 右连接 (RIGHT JOIN):返回右表中的所有行,即使左表中没有匹配的行。
  • 全连接 (FULL JOIN):返回两个表中的所有行,无论是否有匹配。

4. 示例解析

-- -------------------- ---- -------
------ 
    ---------------------- 
    --------------- 
    ---------------------------
---- 
    ---------
----- ---- 
    -----------
-- 
    ----------------------- - --------------------------
  • employees:包含员工信息,如 employee_idnamedepartment_id
  • departments:包含部门信息,如 department_iddepartment_name
  • ON 子句:指定了 employees.department_id 必须等于 departments.department_id,这样 SQL 引擎就知道如何将两个表中的行进行匹配。

5. 注意事项

  • ON 子句中的条件可以是任何有效的 SQL 表达式,但通常用于比较两个表中的列。
  • 如果连接条件涉及多个列,可以使用逻辑运算符(如 ANDOR)来组合多个条件。
  • 在使用 LEFT JOINRIGHT JOIN 时,ON 子句中的条件决定了哪些行会被包含在结果集中,即使没有匹配的行。
纠错
反馈