1
Amy 原创整理|资料核验:2026-10-30
PostgreSQL文档说明,外连接中的ON条件决定哪些记录能够匹配;WHERE则在连接结果形成之后筛选。因此,把同一个右表条件从ON搬到WHERE,可能改变最终保留的左表记录。
教学场景:想列出全部客户及其已付款订单。把“已付款”放进LEFT JOIN的ON条件,可让没有已付款订单的客户仍保留,订单列为NULL;若放在WHERE中,要求右表付款状态等于指定值,那些补出的NULL行就不能通过筛选。
Amy建议先写一句结果要求:是否必须保留没有匹配订单的客户?再决定条件放在哪。验证时至少放入一位没有订单的客户,以及一位只有未付款订单的客户,避免仅用匹配成功的记录检查查询。
官方来源:
https://www.postgresql.org/docs/current/queries-table-expressions.html