1
說我下表在SQL Server中(2008年):如何動態選擇在SQL中加入哪個列?
Person
|PersonID|NickName|FirstName|LastName|
|1 |Jim |James |Leahy |
|2 |Mike |Michael |Ross |
|3 |Bob |Robert |Helberg |
我想知道,如果以下是可能的SQL。我有一個主表,我想根據NickName
和FirstName
列在另一個表上找到匹配。但是,我想要按特定順序將列連接起來。
我想加入的第一列從(NickName
或FirstName
),將是否有上NickName
匹配,然後選擇行下面
|Identifier|PersonId|
|Jim |1 | <- should return PersonId = 1
|Michael |2 | <- should return PersonId = 2
所以在表的標識符匹配以上。如果NickName
沒有匹配,則查看FirstName
。
有沒有什麼辦法可以按照特定順序在NickName
和FirstName
列上查詢?
我不認爲COALESCE
將起作用,因爲我們無法保證任何列將爲NULL
- 我們只知道列中可能不會發生匹配。
如果您需要澄清,請讓我知道;我可能沒有措辭好。
您正在使用哪種RDBMS?如果您使用的是Sql服務器,那麼您可以使用'COALESCE',這裏是[MSDN鏈接](http://msdn.microsoft.com/en-us/library/ms190349.aspx)。 **示例Sql腳本**'從Person中選擇COALESCE(NickName,Firstname)' – Hiten004
謝謝,但我不確定'COALESCE'是否能工作,例如,'NickName'列不是NULL - 它是「 Mike「,但它包含與」FirstName「上的第二張表格匹配的名字」Michael「 –
'Select Person,personId Person,tblIdentifier where Person.NickName = tblIdentifier.Identifier union Select Identifier,PersonId from Person,tblIdentifier where Person.Firstname = tblIdentifier.Identifier'我不確定這是否是正確的解決方案,但您可以使用** union **來達到您的結果。 – Hiten004