如何获取mysql中in子句中不存在的数据

如何获取mysql中in子句中不存在的数据,mysql,count,group-by,in-clause,Mysql,Count,Group By,In Clause,我试着在下面的“电子邮件”表上查询 SELECT email_id,count(*) as count FROM email where email_id in ('a@a.com','b@b.com','c@c.com') group by email_id 结果 email_id count a@a.com 3 c@c.com 2 但我想得到如下顺序的结果 email_id count a@a.com 3 b@b.com

我试着在下面的“电子邮件”表上查询

SELECT email_id,count(*) as count FROM email 
where  email_id in ('a@a.com','b@b.com','c@c.com') group by email_id
结果

email_id   count

a@a.com     3

c@c.com     2

但我想得到如下顺序的结果

email_id     count

a@a.com       3

b@b.com       0

c@c.com       2

供参考b@b.com不存在于电子邮件表中

您可以使用:

SELECT e1.email_id, COUNT(e2.email_id) AS count 
FROM (SELECT 'a@a.com' AS email_id 
      UNION 
      SELECT 'b@b.com'
      UNION
      SELECT 'c@c.com'
 ) AS e1
LEFT JOIN email AS e2 ON e1.email_id = e2.email_id
GROUP BY e1.email_id

模式 查询
Left join
可以说是提取丢失的电子邮件。

类似的内容可能是:

SELECT t.email_id,count(e.email_id) as count 
FROM 
(
select 'a@a.com' as email_id union all
select 'b@b.com' union all
select 'c@c.com'
) t
left join email e on t.email_id = e.email_id
group by t.email_id
试试这个:

SELECT 'a@a.com' as email_id,count(1)  as `count` FROM email where email_id='a@a.com'
union
SELECT 'b@b.com' as email_id,count(1) as `count`  FROM email where email_id='b@b.com'
union
SELECT 'c@c.com' as email_id,count(1) as `count`  FROM email where email_id='c@c.com'

可能是
左连接
ifnull()
谢谢您的快速回复。你能以你的方式给我提供一个查询或例子吗?这会对我有很大帮助,但我在in子句中有很多电子邮件id,那么我如何在每个电子邮件id的联合上下文中管理上面的查询呢?这很重要query@Harshal而不是将电子邮件放在由
in
操作员使用的逗号分隔的列表中,您可以将它们放在在线表格中。否则,你必须创建一个包含所有电子邮件的临时表或查找表。你的回答为我提供了解决问题的线索,谢谢
SELECT t.email_id,count(e.email_id) as count 
FROM 
(
select 'a@a.com' as email_id union all
select 'b@b.com' union all
select 'c@c.com'
) t
left join email e on t.email_id = e.email_id
group by t.email_id
SELECT 'a@a.com' as email_id,count(1)  as `count` FROM email where email_id='a@a.com'
union
SELECT 'b@b.com' as email_id,count(1) as `count`  FROM email where email_id='b@b.com'
union
SELECT 'c@c.com' as email_id,count(1) as `count`  FROM email where email_id='c@c.com'