Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用具有IN条件的多个条件进行搜索_Sql_Sql Server 2008 - Fatal编程技术网

Sql 使用具有IN条件的多个条件进行搜索

Sql 使用具有IN条件的多个条件进行搜索,sql,sql-server-2008,Sql,Sql Server 2008,我基本上是试图检索数据,并在满足3个条件时执行一些步骤。我有一个表,上面显示联系人列(contactid(PrimaryKey)、personid、firstname、lastname、email) 现在,我基本上是在寻找主键,即满足多个条件时员工的联系人ID,即firstname='abc'和email='abc@yahoo.com'. 现在的问题主要是因为此表可能有重复项,并且员工可能有多个电子邮件地址 我想的是像这样的代码 Select * from contact where first

我基本上是试图检索数据,并在满足3个条件时执行一些步骤。我有一个表,上面显示联系人列(contactid(PrimaryKey)、personid、firstname、lastname、email) 现在,我基本上是在寻找主键,即满足多个条件时员工的联系人ID,即firstname='abc'和email='abc@yahoo.com'. 现在的问题主要是因为此表可能有重复项,并且员工可能有多个电子邮件地址

我想的是像这样的代码

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

我正在测试,但我仍然不确定基本上我是困惑的,因为我在查询中有IN。在这种情况下,代码是否按顺序执行?或者,如果你能帮我找到其他方法,那就太好了。

你想要的是以下内容:

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列表允许多种不同的组合。不幸的是,这不太有用

另一种选择是将允许的组合放在单独的表中,并使用联接:

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

您需要的是以下内容:

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列表允许多种不同的组合。不幸的是,这不太有用

另一种选择是将允许的组合放在单独的表中,并使用联接:

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

你说的是3个条件,它们是什么?@IlyaBursov-从联系人中选择*,其中firstname在(“”,“”,“”,“”,“”)中,lastname在(“”,“”,“”,“”)中,emailid在(“”,“”,“”,“”)中。好吧,为什么在中的每个
中都有3个空值?@IlyaBursov-空只是为了演示,但这里有一个示例。所以ABC-abname-ABC@yahoo.com . 这是应该满足的3个条件,我想从联系人中检索该记录的对应ID Select*,其中firstname IN('abc','xyz','aaa',)lastname IN('abclatname','xyzlastname','aaalastname')和emailid IN('abclatname')abc@yahoo.com','xyz@yahoo.com','aaa@yahoo.com我不明白你的例子,你有
abc
的名字,
abclatname
的姓氏和
abc@yahoo.com
对于电子邮件,您在查询中从何处获得
xyz,aaa
?您正在谈论3个条件,它们是什么?@IlyaBursov-从联系人中选择*,其中firstname在(“”,“”,“”,“”,“”)中,lastname在(“”,“”,“”),emailid在(“”,“”,“”)中,好,为什么在
中的每个
中都有3个空值?@IlyaBursov-empty仅用于演示,但下面是一个示例。所以ABC-abname-ABC@yahoo.com . 这是应该满足的3个条件,我想从联系人中检索该记录的对应ID Select*,其中firstname IN('abc','xyz','aaa',)lastname IN('abclatname','xyzlastname','aaalastname')和emailid IN('abclatname')abc@yahoo.com','xyz@yahoo.com','aaa@yahoo.com我不明白你的例子,你有
abc
的名字,
abclatname
的姓氏和
abc@yahoo.com
对于电子邮件,您在查询中从哪里获得了
xyz,aaa
?加入的好主意。。我会尝试一下,我一开始就觉得这是一个加入的好主意。。我会先试试那力量