2015-04-22 38 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 
相关问题