SQL SERVER使用COUNT(*)加入2个表

时间:2014-05-17 13:36:04

标签: sql database sql-server-2008 join inner-join

我需要一些帮助来加入我的表格,我使用了2个表格

//表新闻

id_news|title|
1 |first..|
2 |second..|

//表评论

id_comment|content|id_news
1|Haha..|1
2|Hahe..|2
3|Hoho..|1

我需要在id_news 1

中输出使用COUNT(*)条评论

id_news|title|total_comment|
1|first..|**2**|

到目前为止,我的语法如

SELECT
    news.id_news,
    COUNT(distinct comment.id_news)
FROM
    news 
    inner join comment ON (comment.id_news=news.id_news)
group by 
    news.id_news

2 个答案:

答案 0 :(得分:1)

我想你想要:

SELECT news.id_news, COUNT(*)
FROM news INNER JOIN
     comment
     ON comment.id_news = news.id_news
GROUP BY news.id_news;

请注意以下事项:

  • select子句使用与group by
  • 相同的列
  • COUNT()未使用明确的。在您的表述中,无论注释数量多少,它都将始终返回1
  • 如果您想要没有评论的新闻项,请使用left outer join并将count(*)更改为count(comment.id_news)

答案 1 :(得分:0)

尝试此查询,您将获得所需的数据:

SELECT
    news.id_news,news.title,
    (select count(*) from comment group_by id_news) as total_comment
FROM
    news 
    inner join comment ON comment.id_news=news.id_news