我正在开发一个产品评论页面,它将显示几个提交的评论以及每个评论的数量。
我想我可以用

SELECT title AS review_title,COUNT(id_group) AS Approved_reply_number
WHERE approved <> '0'
GROUP BY id_group`

但是,请阅读不可能将id值复制到insert进程的另一行的内容。因此,如果有人提交了评论,那么评论的id_group字段必须留空。
这里是table example
CREATE TABLE product_review
    (`ID` int, `title` varchar(21), `id_group` int,`approved` int)
;

INSERT INTO product_review
    (`ID`, `title`, `id_group`,`approved`)
VALUES
    (1, 'AAA', Null,1),
    (2, 'BBB', 1,1),
    (3, 'CCC', Null,1),
    (4, 'DDD', 3,0),
    (5, 'EEE', 1,1),
    (6, 'FFF', Null,1),
    (7, 'GGG', 6,1),
    (8, 'HHH',1,1),
    (9, 'III', 6,1)
;

id_group中为空的是提交的评论。其余的是回复,它们包含相应评论的id。我想知道怎样才能得到这样的输出:
review_title   approved_reply_number
  AAA             3
  CCC             0
  FFF             2

最佳答案

您可以使用带有group by和where子句的self-join和count查询来筛选评论

select t.title review_title ,count(*) approved_reply_number
from product_review t
left join product_review t1 on(t.id = t1.id_group)
where t.id_group is null
group by t.id

Demo

关于mysql - 获取MySQL中的回复号码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24943814/

10-11 16:52