为什么左边的联接会使第二张表变成空白



我试图连接两个表,但我一直得到奇怪的结果,所以我决定做一个

SELECT * 
FROM transactions as t
LEFT JOIN customers as c on t.customer_id = c.id

只是为了查看所有列。当我查看输出时,事务表按预期加载,但客户表显示为完全空白的条目,尽管它实际上不是空白的。当我切换订单时("来自客户"和留下已加入的交易也是如此(,客户的表像正常情况一样出现,但现在交易表完全是空白的。老实说,我不知道是什么原因造成的,如果有任何建议,我将不胜感激!

我对问题的最佳猜测是,您稍微误解了联接的工作方式。这个推论是基于你的陈述:

当我查看输出时,事务表按预期加载,但客户表显示为完全空白的条目,尽管它实际上不是空白的。

JOIN将两个表融合在一起。(当然,融合只是在输出中,而不是在数据库本身中!(因此,包含联接的SELECT查询将始终返回一个联合表,而不是两个。

另一个因素是SELECT *是一个糟糕的选择。如果这两个表有相同名称的列(我怀疑这里可能就是这种情况(,那么输出可能会变得非常混乱!像SELECT customers.*这样的语法在这种情况下是你的朋友。

左外部联接是内部联接,加上左侧未出现在内部联接中的所有行,并在右侧添加NULL。

所以您的内部联接是空的,因为没有行符合联接条件,并且您在右侧得到了用NULL补充的左表。

最新更新