SQL 实战:LEFT JOIN 之后,行数为什么变多了
同事发来一条查询:“我只是想给订单补上商品信息,为什么结果从 3 行变成了 4 行?”LEFT JOIN 看起来像是“左表不动,右表挂上去”,但数据库并不这么理解。它真正保证的是:左表的每一行至少出现一次;至于最终出现几次,取决于右表能匹配到几行。
下面用一组可以实际运行的 PostgreSQL 示例,把这个问题拆开。
一、先复现“行数变多”
建两张表:订单和订单明细。
[ CATEGORY ]
sql 分类下共有 1 篇编程实战文章,涵盖常见问题排查、代码示例与实践经验。
同事发来一条查询:“我只是想给订单补上商品信息,为什么结果从 3 行变成了 4 行?”LEFT JOIN 看起来像是“左表不动,右表挂上去”,但数据库并不这么理解。它真正保证的是:左表的每一行至少出现一次;至于最终出现几次,取决于右表能匹配到几行。
下面用一组可以实际运行的 PostgreSQL 示例,把这个问题拆开。
建两张表:订单和订单明细。