在Mysql中加入?

Gir*_*iri 5 mysql left-join

这是我的第一张表.

表格1

然后第二个是

表2

现在我正试图像这样做左连接

SELECT t1.StackID FROM t1 LEFT JOIN t2 on t1.StackID=t2.StackID
Run Code Online (Sandbox Code Playgroud)

产量

产量

我在这里很困惑,这是正确的输出吗?这不应该仅返回左侧表中存在的5行.

Alm*_* Do 4

这是正确的输出。您正在这样做LEFT JOIN,因此对于左表中的每条记录,DBMS 都会“连接”相应的右表记录(-s)(如果条件没有相应的记录,则为 NULL JOIN;还要记住,如果有超过 1 个相应的记录-所有内容都将被连接 - 这个问题就是为什么您不仅从第一个表中获得 5 条记录)。

您想要实现的目标应该由任一DISTINCT修饰符完成,即

SELECT DISTINCT t1.StackID FROM t1 LEFT JOIN t2 ON t1.StackID=t2.StackID;
Run Code Online (Sandbox Code Playgroud)

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