确定两个表应使用哪些键连接SQL Server

确定两个表应使用哪些键连接SQL Server,sql,sql-server,database,Sql,Sql Server,Database,我有以下两张表: 表1: User-ID Country 1111 USA 2222 Brazil 3331 USA 3332 Korea 3333 Korea 3333 USA 3333 France 4444 UK 表2: User-ID Country Region 1111 USA NA 2222 Brazil SA 3331 Korea A 3332 K

我有以下两张表:

表1:

User-ID    Country

1111    USA 
2222    Brazil
3331    USA
3332    Korea
3333    Korea
3333    USA
3333    France
4444    UK
表2:

User-ID   Country  Region

1111      USA       NA
2222      Brazil    SA
3331      Korea     A
3332      Korea     A
3333      N/A       N/A
3330      France    E
4444      UK        E
我想使用“用户ID”作为公共键连接这两个表,但有一个例外

我希望结果是这样的,当用户ID为'3333'时,我希望'Country'仅作为公共密钥

我尝试了以下ncode,根据我的理解,该ncode听起来合乎逻辑,但没有返回设计结果:

Select T1.User-ID, T1.Country, Case When T1.User-ID ='3333' AND T1.Country = 
       T2.Country THEN T2.Region ELSE T2.Region END

From Table1 as T1 Left Outer Join
     Table2 as T2 ON T1.User-ID = T2.User-ID OR T1.Country = T2.Country
我尝试过其他几种方法,但没有成功,我将得到以下结果:

  • 用户ID 3333的空区域
  • 用户ID 3333的双应用行 而3333以外的记录将返回预期结果

您似乎希望在
ON
条款中增加一个条件:

From Table1 T1 Left Outer Join
     Table2 T2
     ON T1.UserID = T2.UserID AND
        (T1.UserId <> 33333 OR T1.Country = T2.Country)
来自表1 T1左外连接
表2 T2
在T1.UserID=T2.UserID和
(T1.UserId 33333或T1.Country=T2.Country)

然后T2.Region ELSE T2.Region END
那么为什么要使用
CASE
表达式,因为在这两种情况下它都将返回
T2.Region
值?或者这只是一个输入错误?@Sami这是一个不必要的代码,我在更改条件后忘记删除它,因为它不会影响结果。谢谢:)谢谢你的意见,我想我的问题中的表格描述不正确。我已经编辑过了。我在这里制作了一把小提琴来说明这一点