我有查询:
SELECT
b.title,
b.url,
b.`date`,
b.gallery,
count(c.id) as comments_count,
a.name,
b.content,
b.comments,
LEFT(b.content, LOCATE('<page>', b.content)-1) as content_short
FROM blog b
LEFT JOIN blog_comments c ON
(b.id = c.note AND c.approved = 1)
LEFT JOIN administrators a ON
(b.aid = a.id)
WHERE
b.`date` < now() AND
b.active = 1
ORDER BY b.`date` DESC;
现在,当我删除count(c.id) as comments_count,
时,我已经返回了2行。当它出现时,只返回了一行。
有没有办法解决ot或我只需要改变
count(c.id) as comments_count,
到(select count(id) as
comments_count from blog_comments where note = b.id) as comments_count,
?
答案 0 :(得分:3)
Count(*)
是一个聚合函数,因此它将应用于一个组中。
这意味着当您依靠组时,它将在每个组上应用该功能。
这些组是在您使用分组依据时形成的,在这种情况下,您没有使用,因此MySQL
认为所有选择(您的联接)是仅1组。
因此,将计数应用于唯一组并返回行数。
您应该在想要的字段
中添加Group by
一个例子是here