假设我在SQL Server(2008)中有以下表:
Person
|PersonID|NickName|FirstName|LastName|
|1 |Jim |James |Leahy |
|2 |Mike |Michael |Ross |
|3 |Bob |Robert |Helberg |
我想知道SQL中是否可以使用以下内容。我有一个主表,我想根据NickName
和FirstName
列在另一个表上找到匹配项。但是,我希望按特定顺序连接列。
我想加入上面的第一列(NickName
或FirstName
),该列与下表中的标识符相匹配
|Identifier|PersonId|
|Jim |1 | <- should return PersonId = 1
|Michael |2 | <- should return PersonId = 2
因此,如果NickName
上有匹配项,则选择该行。如果NickName
上没有匹配项,请查看FirstName
。
我是否可以按特定顺序查询NickName
和FirstName
列?
我不认为COALESCE
会起作用,因为我们无法保证任何列都是NULL
- 我们只知道列上可能不会发生匹配。< / p>
如果您需要澄清,请告诉我。我可能没有措辞好。
答案 0 :(得分:1)
由于您没有指定主表的架构,我假设它有Identifier varchar(100)
字段,可以包含nickname
或firstname
。在这种情况下,query应如下所示:
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