2015-04-22 35 views
2

我試圖從firstname和lastname在同一行中的表中獲取人員的出生日期。我正在處理100個名字,我無法得到獨特的結果。SQL - 從多個列中選擇結果WHERE行1和行2爲真

我試過在名字和姓氏,但我收到不在同一行中的匹配。

例如:表 「測試」

名字姓氏
李四
約翰·亞當斯
李四
莫莉杰特森
瑪麗·韋恩

SELECT firstname,lastname 
FROM test 
WHERE lastname IN ( 
'Doe', 
'Adams', 
'Jetson' 
) 
AND 
firstname IN (
'John', 
'John', 
'Molly' 
); 

我只W¯¯其中名字比賽第二列表的名字,但我得到任何的結果,其中的姓名被發現或姓氏螞蟻的情況下被發現,所以我得到兩個「李四」和「李四」在結果中,因爲第一個名字被找到並且姓氏也被找到了。

我要回會是怎樣:

李四 約翰·亞當斯 莫莉杰特森

NOT: 李四 李四 約翰·亞當斯 莫莉杰特森

回答

0

您需要展開使用的邏輯andor

SELECT firstname, lastname 
FROM test 
WHERE (lastname = 'Doe' and firstname = 'John') OR 
     (lastname = 'Adams' and firstname = 'John') OR 
     (lastname = 'Jetson' and firstname = 'Molly') 
0

我會建議串聯一個整潔的where子句:

SELECT 
firstname, 
lastname 

FROM 
test 

WHERE 
firstname + ' ' + lastname IN ('John Doe', 'John Adams', 'Molly Jetson') 
1

您可以從SQL Server使用表值構造2008年起

SELECT t1.FirstName , t1.LastName 
FROM Test t1 
JOIN (
    VALUES ('John','Doe'), 
      ('John','Adams'), 
      ('Molly','Jetson') 
)t2(FirstName, LastName) 
    ON t1.FirstName = t2.FirstName and t1.LastName = t2.LastName 
相關問題