作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 SQL 查询,我只是在其中连接两个表。一张表包含注释,另一张是用户表。我以简单的方式加入表格以获取有关撰写评论(用户名)的用户的用户信息,同时获取评论(评论文本等)。
现在我想统计评论的数量,以便在页面顶部写出正确的评论数量。我通过添加一个 COUNT 和一个别名来保存值。
当我回显 numCount 时,我得到了正确的评论值,但我的评论循环中没有任何评论。一旦我删除计数,我就会再次收到所有评论。我做错了什么?
SELECT
ncID, ncText, ncDate,
uID, uName, uImageThumb,
COUNT(a.ncID) AS numComments
FROM tblNewsComments a LEFT JOIN tblUsers b
ON a.ncUserID = b.uID
WHERE a.ncNewsID = $newID
ORDER BY ncDate DESC
最佳答案
我将假设这是 MySQL(或 SQLite),因为大多数其他 RDBMS 会在此查询上失败。问题是您缺少 GROUP BY
子句,在使用像 COUNT()
这样的聚合函数时是必需的。除非要对整个行集进行操作。 MySQL 的异常行为是允许缺少 GROUP BY
, 或允许 SELECT
中的列不在 GROUP BY
中,产生不寻常的结果。
执行此操作的适当方法是加入返回 COUNT()
的子查询。每 ncID
.
SELECT
ncID,
ncText,
ncDate,
uID,
uName,
uImageThumb,
/* The count returned by the subquery */
ccount.numComments
FROM
tblNewsComments a
LEFT JOIN tblUsers b ON a.ncUserID = b.uID
/* Derived table returns only ncID and count of comments */
LEFT JOIN (
SELECT ncID, COUNT(*) AS numComments
FROM tblNewsComments
GROUP BY ncID
) ccount ON a.ncID = ccount.ncID
WHERE a.ncNewsID = $newID
ORDER BY ncDate DESC
ncID
的计数,不是每个
ncUserID
的计数正如我最初拥有的那样。
关于SQL:在连接中计数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784021/
我是一名优秀的程序员,十分优秀!