1

假设我在 SQL Server (2008) 中有下表:

Person

|PersonID|NickName|FirstName|LastName|
|1       |Jim     |James    |Leahy   |
|2       |Mike    |Michael  |Ross    |
|3       |Bob     |Robert   |Helberg |

我想知道在 SQL 中是否可以执行以下操作。我有一个主表,我想根据NickNameFirstName列在另一个表上查找匹配项。但是,我希望以特定顺序加入列。

我想加入上面(NickNameFirstName)的第一列,它将与下表中的标识符匹配

|Identifier|PersonId|
|Jim       |1       | <- should return PersonId = 1
|Michael   |2       | <- should return PersonId = 2

因此,如果有匹配项,NickName则选择该行。如果没有匹配项,NickName请查看FirstName.

有什么方法可以按特定顺序查询列吗NickNameFirstName

我不认为COALESCE会起作用,因为我们不能保证任何列都会NULL- 我们只知道列上可能不会发生匹配。

如果您需要澄清,请告诉我;我可能没有很好地措辞。

4

1 回答 1

1

由于您没有指定主表的架构,因此我假设它具有Identifier varchar(100)字段,该字段可以包含nicknamefirstname。在这种情况下,查询应如下所示:

select m.identifier, 
PersonId = isnull(p1.PersonID,p2.PersonID)
from maintable m
left join persons p1 on p1.nickname = m.identifier
left join persons p2 on p2.firstname = m.identifier
于 2013-02-07T05:10:23.970 回答