首页 > 解决方案 > 为什么连接会给出重复的行?

问题描述

我很想知道为什么 SQL 连接会给出重复的行。考虑我有一个数据表的例子

|date     |source  |users
|24th June|organic |100
|24th June|Direct  |100
|23rd June|Organic |100
|22nd June|Paid    |100

如果我们有另一个类似的表

|date     |source  |registrations
|24th June|paid    |10
|24th June|Direct  |30
|23rd June|Organic |50
|22nd June|Paid    |45

让我们将上面的表称为 t2,将第一个表称为 t1。当我在日期执行从 t1 到 t2 的左连接时,会生成相同的某些行。我写了一个查询

select t1.dates, t1.source,t1.users,t2.registrations
from t1
left join t2 on t1.dates = t2.dates

根据上面的表格,在 6 月 24 日不应该对不属于第二张表格的源有机进行任何注册,但它显示了我。我可以知道可能是什么原因,因为我们没有相同的主键。另外,任何人都可以通过一些文章来指导我了解这个概念吗?

标签: sqljoin

解决方案


根据上面的表格,6 月 24 日不应该对不属于第二张表格的源有机进行任何注册,但它显示了我。

为什么不?您的查询只是datejoin on ,如果您想加入date并且source您应该指定它。

连接完全由查询指定,它们不受主键或外键的影响。


推荐阅读