如何检查数据库中的同一个表中是否存在多组值?

时间:2018-01-30 03:00:23

标签: mysql sql database

这是我的sqlfiddle

http://sqlfiddle.com/#!9/e443688/2

如果我有一个值列表:

  1. a@test.com
  2. b@test.com
  3. c@test.com
  4. 我的表有一个名为email的列我可以运行像

    这样的查询

    select email from datatable where email in ('a@test.com', 'b@test.com', 'c@test.com')

    找出它们是否存在。

    但是,如果我的值列表至少包含2列:

    1. a@test.com,经理
    2. b@test.com,编辑
    3. c@test.com,编辑
    4. 我的表有两列emailjob_title,如何运行查询以检查是否有与我搜索的值匹配的行?

      我不想知道有多少。我想知道哪个值组存在。

      理想情况下,如果我的查询可以返回类似这样的内容

      email | job_title | exists
      ------|-----------|-------
      a@test.com | manager | 1
      b@test.com | editor | 0
      c@test.com | editor | 1
      

      或者只是

      email | job_title 
      ------|-----------
      a@test.com | manager 
      c@test.com | editor 
      

      那已经够好了

2 个答案:

答案 0 :(得分:0)

'marekful'建议的是一个非常好的选择。如果您正在寻找替代方法,这里有另一种选择:

select email 
from datatable
where (email = 'a@test.com' and job_title = 'manager')
or (email = 'b@test.com' and job_title = 'editor')
or (email = 'c@test.com' and job_title = 'editor');

答案 1 :(得分:0)

我使用@marekful注释并连接这两个值。

@ Strawberry的建议也是有效的。

这是小提琴。 http://sqlfiddle.com/#!9/e443688/3

查询是

select id from emails where (email,job_title) in(('a@test.com','manager'),('b@test.com','editor'),('c@test.com','editor'))