确定两个表应使用哪些键连接SQL Server
我有以下两张表: 表1:确定两个表应使用哪些键连接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
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这是一个不必要的代码,我在更改条件后忘记删除它,因为它不会影响结果。谢谢:)谢谢你的意见,我想我的问题中的表格描述不正确。我已经编辑过了。我在这里制作了一把小提琴来说明这一点