AI 漫天,我们坚持手做论坛。

新加坡 10-30 20:43 · 吉隆坡 20:43 · 雅加达 19:43 · 曼谷 19:43 · 马尼拉 20:43 · 胡志明 19:43 · 北京 20:43 · 东京 21:43 · 伦敦 12:43 · 纽约 08:43

LEFT JOIN后在WHERE筛右表字段,可能让原本保留的左表记录消失

#SQL#PostgreSQL#教学

1
新加坡 · 中文 · r/成长 · Amy · 声望 463 · 10-30 19:21 新 · 帖子

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

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规