我构建了工作MySQL查询:
SELECT
v.*, u.username
FROM
video AS v, users AS u
WHERE
v.type = 'public'
AND
v.user_ID = u.user_ID
现在,我想在表count()
中添加第三个表和comments
个结果,其中此表中的video_ID
将等于表video
中的 SELECT
v.*, u.username, count(c.video_ID)
FROM
video AS v, users AS u, comments AS c
WHERE
v.type = 'public'
AND
v.user_ID = u.user_ID
AND
v.video_ID = c.video_ID
。< / p>
我尝试了这个但是没有成功:
video_ID
作为回报,我想获得与某些{{1}}相关的评论数量。
我不明白如何在一个查询中使其正常工作。
你能帮帮我吗?
提前谢谢你,
髂骨
答案 0 :(得分:7)
如果在查询中使用类似COUNT
的聚合函数,则需要使用GROUP BY
子句指定分组。
试试这个
SELECT
v.*,
u.username,
count(c.video_ID) AS comment_count
FROM
video AS v
INNER JOIN users AS u ON v.user_ID = u.user_ID
INNER JOIN comments AS c ON v.video_ID = c.video_ID
WHERE
v.type = 'public'
GROUP BY
v.id,
u.username,
v.v.add_time
ORDER BY
v.add_time
虽然MySQL允许您省略GROUP BY
子句的某些元素,但最好指定它们。
加入两个表时,最好使用INNER JOIN
语法,而不是WHERE
过滤器。