0

我构建了工作 MySQL 查询:

  SELECT 
    v.*, u.username 
  FROM 
    video AS v, users AS u
  WHERE
    v.type = 'public' 
  AND 
    v.user_ID = u.user_ID

现在我想添加第三个表和表中count()的结果,该表commentsvideo_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

作为回报,我想获得与某些评论相关的评论数量video_ID

我不明白如何使它在一个查询中正常工作。

你能帮帮我吗?

提前谢谢你,
伊利亚

4

1 回答 1

7

如果您在查询中使用像 a 这样的聚合函数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过滤器。

于 2012-09-01T18:01:23.320 回答