这是我的第一张 table 。

然后第二个是

现在我试图做这样的左联接

SELECT t1.StackID FROM t1 LEFT JOIN t2 on t1.StackID=t2.StackID

输出

我很困惑,这是正确的输出吗?难道这不应该只返回左侧表中存在的5行。

最佳答案

这是正确的输出。您正在执行LEFT JOIN,因此对于LEFT表中的每个记录,DBMS都会“连接”相应的RIGHT表记录(-s)(如果没有JOIN条件的对应记录,则为NULL;还请记住,如果存在多于1相应的记录-所有记录都将加入-这个问题就是为什么您从第一张表中不仅获得5条记录)。

您想要实现的目标应该通过DISTINCT修饰符完成,即

SELECT DISTINCT t1.StackID FROM t1 LEFT JOIN t2 ON t1.StackID=t2.StackID;

有关SQL中的JOIN的更多信息,您可以阅读here

关于mysql - 左加入Mysql吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18614105/

10-11 03:31