【发布时间】:2017-07-22 04:12:33
【问题描述】:
我希望加入三张桌子。问题是 - 我知道 3 个值中有 2 个值,但第三个表中也可能有一些值。我只想显示不在第三个表中的值。
tbl1
ClientID SvcGoalID VendorID
17 7887 784
tbl2
ClientID SvcGoalID SvcAuthID
17 7887 634
tbl3
ClientID SvcAuthID
17 634
所以基本上这是我的表格的粗略结构,这就是我要寻找的。我希望在查询中加入所有三个表 - 使用 SvcGoalID 的 tbl1 和 tbl2 以及使用 SvcAuthID 的 tb2 和 tb3 - 并且仅在使用 SvcAuthID 的 tbl3 中没有值时显示数据。任何帮助将不胜感激。
【问题讨论】:
-
left join tbl3 on tbl2.SvcAuthID = tbl3.SvcAuthID where tbl3.SvcAuthID is null -
当你说 tbl3 中没有值时,你的意思是没有匹配的行来加入吗? (即在您的示例中,如果 tbl3.SvcAuthID = 633,那么您现在需要返回数据)
-
@scsimon - 不能使用 ClientID - 必须是 tbl1 和 tbl2 之间的 SvcGoalID - 这些是唯一的唯一值 - 对于同一个客户端,我可以在 tb1 和 tbl2 之间有 20-30 条记录,相同去tbl3。我只能使用 svcGoalID 和 svcAuthID
-
错字@yanman1234 但我修正了...只是一个非常奇怪的数据结构
-
@BobSki 如果这不起作用,我们可以以类似的方式使用子查询
标签: sql sql-server left-join