计算MySQL中DISTINCT行的数量

tan*_*ndy 6 php mysql comments commenting

我正在用PHP/MySQL构建一个评论系统.这个评论系统有一个很好的功能,它允许用户突出显示文本(在数据库中存储为"selected_text"),然后突出显示的文本将与用户发表的评论一起存储在数据库中.此外,我还将段落(突出显示的文本出现)存储为INT.这些值都存储在数据库中,但现在我想用它们做些什么.

我想创建"评论计数器".这些注释计数器将放在文章中每个段落的旁边,它们将显示对它们所附加的段落所做的注释总数."评论"的视觉概述:表格结构:

这是表结构的视图

我尝试检索此信息的最新查询是:

$distinct = mysql_query("SELECT COUNT(DISTINCT paragraph_id) FROM comments");

和相应的PHP代码:

while ($result_three = mysql_fetch_array($distinct)) 
{ 
    echo $result_three['paragraph_id'];
}
Run Code Online (Sandbox Code Playgroud)

现在,我想我可能会以错误的方式解决这个问题.我考虑过尝试运行首先查找所有内容的查询DISTINCT paragraph_ids.接下来,我会为每个循环运行一个计算出现次数的循环paragraph_ids.

我现在正在处理的查询似乎没有实现我的目标.此外,我担心我没有明确的方法将计算的数据明确地附加到"评论计数器".

bfa*_*tto 7

如果我理解你的问题,你需要GROUP BY paragraph_id.试试这个:

SELECT paragraph_id, COUNT(*)
FROM comments
GROUP BY paragraph_id
Run Code Online (Sandbox Code Playgroud)


小智 5

基本上,您需要计算每组段落ID中的注释。正确的查询如下:

$distinct = mysql_query("SELECT paragraph_id, (DISTINCT comment_id) as comment_count FROM comments GROUP BY paragraph_id");

while ($result_three = mysql_fetch_array($distinct)) 
{ 
    echo $result_three['paragraph_id']; // Gives the id of the paragraph
    echo $result_three['comment_count']; // Gives the comment count for the associated paragraph
}
Run Code Online (Sandbox Code Playgroud)