SQL Join在输出

时间:2018-02-19 11:17:57

标签: sql sql-server

所以我有一个查询,由于我的数据库需要很多表来运行。不幸的是,这是一个较旧的数据库,导航有点问题。

此查询最初检查会员资格是否为40或50年,很容易解决。但是,现在我必须查看是否有一个属性告诉我它们是否是恢复成员,这会使此时间轴无效。

我设法获得显示和排除记录,但我相信我犯的错误是使用外连接,因为我试图在连接表中检查此条件的多个记录,这导致了几个案例复制,因为多个不同的属性可以包含在同一列中

我目前正试图理解这一点,但我相信我使用了错误的连接,因为如果一个人拥有与此结果不同的属性,则返回一个额外的记录。

我的问题是我应该使用哪个Join,或者在这种情况下我应该考虑在where条件下编写子查询

3 个答案:

答案 0 :(得分:0)

您可能想要使用LEFT / RIGHT或OUTER JOIN。这些JOIN的结果较小。或者您可以使用DISTINCT - 这会强制结果不返回重复项。

答案 1 :(得分:0)

您可以将不同与列的指定名称一起使用。也许通过使用你不会得到重复的列。

eg. select distinct ed.id, ed.name, ed.dob, ea.address, ed.Emailid from Employeedetails ed join Employeeaddress ea on ed.id = ea.id

答案 2 :(得分:0)

所以我通过使用子查询来解决这个问题。

该要求的性质意味着我很难制作一个消除重复的清单,因为我在联合表中寻找可能出现或未出现的结果。

所以我在where子句中使用了一个子查询来查找我试图排除哪些产生误报的实例,并使用这些结果从原始表中删除那些主键这种方式使用Not In Primary Key。

可能效率不是最高,但确实可以在几秒钟内完成