Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我的左联接返回的行数超出预期_Sql Server - Fatal编程技术网

Sql server 我的左联接返回的行数超出预期

Sql server 我的左联接返回的行数超出预期,sql-server,Sql Server,为什么我的左连接返回的行比我预期的多?我尝试了一个内部联接,但它也返回了更多的行 Select h, b, c From table1 t Left join table2 f On table1.a = table2.g 内部联接:当两个表中都有匹配项时,返回行 左联接:返回左表中的所有行,即使右表中没有匹配项。内部联接:当两个表中都有匹配项时返回行 LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项。因此知道您期望的是一对一关系,我猜(正如其他人所说)实际上存在一对多关系 因此

为什么我的左连接返回的行比我预期的多?我尝试了一个内部联接,但它也返回了更多的行

Select h, b, c 
From table1 t
Left join table2 f On table1.a = table2.g

内部联接:当两个表中都有匹配项时,返回行


左联接:返回左表中的所有行,即使右表中没有匹配项。

内部联接:当两个表中都有匹配项时返回行


LEFT JOIN:返回左表中的所有行,即使右表中没有匹配项。

因此知道您期望的是一对一关系,我猜(正如其他人所说)实际上存在一对多关系

因此,您需要一种测试方法:

select table2.g, count(*)
from table2
group by table2.g
having count(*) > 1

所以知道你期望一对一的关系,我猜(正如其他人所说)实际上存在一对多的关系

因此,您需要一种测试方法:

select table2.g, count(*)
from table2
group by table2.g
having count(*) > 1

好吧,请解释一下你的期望,以及你得到了什么。。。。。另外,请显示两个表的示例数据,结果可以让您更清楚地了解您的期望值,例如“对于表1中的每一行,我期望表2中的匹配行数为1或更少”?在执行联接之前,我期望的行数等于表1。1对1关系..但我们不知道什么是
t.a
f.g
,它们是如何关联的,它们是主键,它们是通过一对一或一对多关系等进行关联的。等等。或者您的联接逻辑不正确,或者表1到表2之间存在1:M的关系。那么-请解释您的预期,而你得到的是。。。。。另外,请显示两个表的示例数据,结果可以让您更清楚地了解您的期望值,例如“对于表1中的每一行,我期望表2中的匹配行数为1或更少”?在执行联接之前,我期望的行数等于表1。1对1关系..但我们不知道什么是
t.a
f.g
,它们是如何关联的,它们是主键,它们是通过一对一或一对多关系等进行关联的。等等。或者您的联接在逻辑上不正确,或者表1到表2之间存在1:M的关系。是的。非常正确。但这两种类型的联接返回的行似乎都比预期的多。OP想知道这是怎么可能的。(内部联接返回的行可能比左联接少一些,但结果可能仍然包含比预期更多的行。)是。非常正确。但这两种类型的联接返回的行似乎都比预期的多。OP想知道这是怎么可能的。(内部联接返回的行可能比左联接少一些,但结果可能仍然包含比预期更多的行。)是。如果应该强制执行1:1关系,则可以在
table2
g
列上创建唯一的约束/索引(除了可能已经存在的外键约束)。当然,只有当您对duplucates的测试查询不会返回任何结果时,这才有效。(应首先解决任何现有的重复项。)是。如果应该强制执行1:1关系,则可以在
table2
g
列上创建唯一的约束/索引(除了可能已经存在的外键约束)。当然,只有当您对duplucates的测试查询不会返回任何结果时,这才有效。(应首先解决任何现有的重复项。)