我想在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
我该如何实现?
答案 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;
答案 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)
答案 2 :(得分:0)