MySQL独特的数量

时间:2014-11-12 10:05:24

标签: mysql distinct

abc table -

ID
---
1
2
3

xyz table -

abc_id | flag 

--------------

1       |   0

1       |   1

2       |   0

3       |   0

3       |   0

我需要不同abc_id的计数,如果对于特定的abc_id,如果flag = 1,则不应计算该id。 在上面的例子中,计数应该是2.有什么办法可以实现吗?对不起,如果之前已经回答了问题,或者问题是否明显。在此先感谢^^

编辑:基本上我想在计数中忽略abc_id = 1,因为其中一个标志= 1.我希望它足够清楚:|

2 个答案:

答案 0 :(得分:0)

主要问题是找出你的意思,但我很确定就是这样。 :O)

计算不同的abc_id,完全排除至少有一行被标记的ID。所以id 1被排除在外,因为它有一个标志。

您可以使用not in条件解决此问题,以排除所有已标记的ID。之后,您可以使用count(distinct abc_id)计算剩余行数,以获取不同ID的数量。

select
  count(distinct abc_id) as non_flagged_id_count
from
  xyz x1
where
  abd_id not in 
    (select x2.abc_id from xyz x2 where x2.flag = 1)

答案 1 :(得分:0)

select count(distinct abc_id)
from xyz as x
left join (
select abc_id from xyz where flag = 1 
) as y using (abc_id)
where y.abc_id is null
;