2017-08-03 176 views
0

我基本上试图检索数据并在满足3个条件时执行一些步骤。我有一个表,说接触塔(的ContactID(PrimaryKey的),PERSONID,名字,姓氏,电子邮件) 现在我基本上是试图找到即员工的ContactID主键在满足多个条件,即其中姓=“ABC”和电子邮件='[email protected]'。现在这个问题主要是因为这张表可能有重复,员工可能有超过1个电子邮件地址。使用IN条件中的多个条件进行搜索

我喜欢

Select * from contact where firstname IN ('','','',) and lastname IN ('','','') and emailid IN ('','','') 

思维的代码我测试,但我现在还不能确定基本上我是因为IN的,我在查询困惑。在这种情况下代码是否被顺序执行?或者如果你能以其他一些很棒的方法来帮助我。

+0

你谈论的3个条件,它们是什么? –

+0

@IlyaBursov - SELECT * FROM接触其中姓名IN( '', '', '',)和姓氏IN( '', '', '')和EMAILID IN( '', '', '') –

+0

好的,为什么你在每个'in'中有3个空值? –

回答

3

你想要的是类似以下内容:

SELECT * 
FROM contact 
WHERE (firstname = 'fname1' AND lastname = 'lname1' and emailid ='email1') 
    OR (firstname = 'fname2' AND lastname = 'lname2' and emailid ='email2') 
    OR (firstname = 'fname3' AND lastname = 'lname3' and emailid ='email3') 

的IN列表允许许多不同的组合。不幸的是,这不太有用。

另一种办法是把允许的组合在一个单独的表,并使用JOIN:

SELECT C.* 
FROM contact C JOIN allowedCombinations A 
ON C.firstname = A.firstname AND C.lastname = A.lastname AND C.emailid = A.emailid 
+0

加入的明智的想法..我会尝试一下, –