使用INNER JOIN查找类似的数据 - 我的MyProblem:重复一些结果

时间:2015-10-28 08:07:49

标签: sql-server

我正在使用此查询在两个表中查找类似的结果,但是有些数据会重复,我不知道问题可能是什么。 你可以检查这个查询,看看我做错了什么。

各种连接(内部,左侧,右侧和单独连接!返回相同的结果)

select dbo.netss.[CODE]
      ,dbo.netss.[NUM]
      ,dbo.netss.[state]
      ,dbo.netss.[county]
      ,dbo.netss.[zone]
      ,dbo.netss.[Mvillage]
      ,dbo.netss.[Village]
      ,dbo.netss.[operator]
      ,dbo.P1.*
from dbo.P1
inner join
dbo.netss
on (dbo.netss.[state]=dbo.p1.[state])
where dbo.P1.Name=dbo.netss.Village

2 个答案:

答案 0 :(得分:0)

加入[state]可能不是你想要的。如果[state]列中的值在两个表中都不唯一,那么您将获得从dbo.p1到dbo.netss的多个匹配,也可能从dbo.netss到dbo.p1。如下所示,在连接列表中添加更多列,例如:

on dbo.netss.[state] = dbo.p1.[state] and dbo.netss.[county] = dbo.p1.[county] and dbo.netss.[CODE] = dbo.netss.[CODE]

换句话说,加入使行唯一且也在另一个表中的列组合。这将在一个表中定义一个唯一键,该键可以是另一个表的外键。

答案 1 :(得分:0)

--You Can try this
select DISTINCT
       dbo.netss.[CODE]
      ,dbo.netss.[NUM]
      ,dbo.netss.[state]
      ,dbo.netss.[county]
      ,dbo.netss.[zone]
      ,dbo.netss.[Mvillage]
      ,dbo.netss.[Village]
      ,dbo.netss.[operator]
      ,dbo.P1.*
from dbo.P1
inner join
dbo.netss
on (dbo.netss.[state]=dbo.p1.[state])
where dbo.P1.Name=dbo.netss.Village
----the DISTINCT keywords do eliminate duplicate