mysql count重复值

pobjuy32  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(374)

我想对父项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

我该怎么做?

ee7vknir

ee7vknir1#

看起来您希望total列表示给定 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;

演示

i7uq4tfw

i7uq4tfw2#

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

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)

演示

jum4pzuy

jum4pzuy3#

也可以使用子查询:

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

结果

相关问题