用2个标准计数记录

时间:2017-04-16 17:59:09

标签: mysql sql count

如何计算具有2个条件的数据库记录。

这是图片:

enter image description here

我想计算只有条件12 & 18的帖子。因此,在第11篇之后我应该将计数器设置为值1.第5,6,7,9,10号帖子不应该被计算,因为条件12& 18不要出现。

在这里得到的想法是一个查询:

SELECT COUNT(post) from post_condition
where `condition`=18 AND  `condition`=12 

但这是错误的,我尝试了一些子查询但没有成功。

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT COUNT(post)
FROM table
WHERE condition IN (12, 18)
GROUP BY post
HAVING COUNT(DISTINCT(condition)) = 2;

答案 1 :(得分:2)

如果你想计算两者兼有的数字,那么你可以使用子查询生成匹配的帖子:

SELECT COUNT(*)
FROM (SELECT pc.post
      FROM post_condition pc
      WHERE pc.condition IN (12, 18)
      GROUP BY pc.post
      HAVING COUNT(pc.condition) = 2  -- assumes no duplicates
     ) t;

你可以在没有子查询的情况下做这个,如果你有一个帖子表(我怀疑是真的:

select count(*)
from posts p
where exists (select 1 from post_condition pc where pc.post = p.post and pc.condition = 12) and
      exists (select 1 from post_condition pc where pc.post = p.post and pc.condition = 18);

使用post_condition(post, condition)上的索引,这可能是最快的方法。只有当许多帖子在post_condition中没有任何行时,这种情况才会变慢。