MYSQL计数重复值

时间:2018-06-06 06:34:29

标签: mysql count duplicates

我想在parent_id上计算相同的值,但如果有' 0'则不计算值。

table:t_article
id_article      parent_id
441             0
1093            18
18              0
3141            3130
3130            0
3140            3130
3142            3130

预期输出

id_article      parent_id       Total
441             0               0
1093            18              1
18              0               0
3141            3130            3
3130            0               0
3140            3130            3
3142            3130            3

我该如何实现?

3 个答案:

答案 0 :(得分:2)

看起来您希望总列表示给定parent_id具有的子项数,这与该parent_id值的计数一致。您可以尝试加入查找计数的子查询:

SELECT
    t1.id_article,
    t1.parent_id,
    COALESCE(t2.Total, 0) AS Total
FROM t_article t1
LEFT JOIN
(
    SELECT parent_id, COUNT(*) AS Total
    FROM t_article
    WHERE parent_id <> 0
    GROUP BY parent_id
) t2
    ON t1.parent_id = t2.parent_id;

enter image description here

Demo

答案 1 :(得分:2)

这是另一种使用内连接和条件聚合的方法

select a.*, b.cnt
from t_article a
join (
  select parent_id, sum(parent_id <> 0) cnt
  from t_article 
  group by parent_id
) b using(parent_id)

Demo

答案 2 :(得分:0)

您也可以使用子查询:

SELECT id_article,parent_id,(SELECT COUNT(parent_id) FROM t_article as t2  WHERE t2.parent_id = t1.parent_id AND t2.parent_id != 0 ) AS total  FROM `t_article` as  t1

<强>结果

enter image description here