[英]Mysql join table and count rows
我有两个表格:评论和照片
每个评论都通过照片ID“连接”到特定照片。 我想从某个作者(author_id)中获取所有照片,并对特定照片的所有评论进行计数。 我为我的英语感到抱歉,但是我认为这是描述它的最好方式。
我想要一张桌子:
到目前为止,我已经尝试过(语法错误):
"SELECT p.id, p.rating, p.created_at, x.*
FROM photos p
LEFT JOIN
(
SELECT photo_id, COUNT(*) as cc
FROM comments
GROUP BY photo_id
) x
ON x.photo_id= p.id"
错误:“您的SQL语法有错误;请在与MySQL服务器版本相对应的手册中查找在'附近使用的正确语法。” SELECT p.id,p.rating,p.created_at,x。* FROM photos左联接(在第1行选择“
照片表
评论表
这样,它将以更少的资源需求更快地工作,并且更容易阅读:)
SELECT p.id, p.rating, p.created_at, count(c.id) AS cnt
FROM photos p
LEFT JOIN comments c ON c.photo_id=p.id
GROUP BY p.id
注意,编写此查询的最快方法可能是:
SELECT p.*,
(SELECT count(*) FROM comments c WHERE c.photo_id = p.id) AS cnt
FROM photos p
WHERE p.author_id = 1;
为了获得最佳性能,请在comments(photo_id)
上创建一个索引。
我提供此功能是因为要考虑性能。 join
和group by
方法也是编写查询的好方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.