【问题标题】:Search using multiple conditions with the IN Condition使用 IN 条件使用多个条件进行搜索
【发布时间】:2017-08-04 08:29:14
【问题描述】:

我基本上是在满足 3 个条件时尝试检索数据并执行一些步骤。我有一张表说联系人列(contactid(PrimaryKey),personid,firstname,lastname,email) 现在我基本上是在尝试找到主键,即当满足多个条件时员工的 Contactid,即 firstname = 'abc' 和 email = 'abc@yahoo.com'。现在的问题主要是因为这个表可能有重复,员工可能有超过 1 个电子邮件地址。

我在想像这样的代码

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

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

【问题讨论】:

  • 你说的是三个条件,它们是什么?
  • @IlyaBursov - 从联系人中选择 * 其中 firstname IN ('','','',) and lastname IN ('','','') and emailid IN ('',' ','')
  • 好的,为什么每个in 都有3个空值?
  • @IlyaBursov- 空只是为了演示但这里有一个例子。所以 ABC - ABCLASTNAME - ABC@yahoo.com。这些是应该满足的3个条件,我想检索该记录的相应ID Select * from contact where firstname IN ('abc','xyz','aaa',) and lastname IN ('abclastname', 'xyzlastname','aaalastname') 和 emailid IN ('abc@yahoo.com','xyz@yahoo.com','aaa@yahoo.com')
  • 我不明白你的例子,你的名字有abc,姓氏有abclastname,电子邮件有abc@yahoo.com,你从哪里得到xyz,aaa的查询?

标签: sql sql-server-2008


【解决方案1】:

你想要的是如下内容:

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

【讨论】:

  • Join 的绝妙主意.. 我会尝试一下,一开始会打动我
猜你喜欢
  • 2014-11-13
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多