2013-06-25 37 views
-1

我不知道为什么这样的查询工作不正常,因为我无法找到错误这是此查询中的错误?

SELECT U.user_name, 
    COUNT(*) AS fav_count 
FROM Users AS U 
LEFT JOIN Favorites AS F 
    ON F.user_id = U.user_id; 

非常感谢你,为我的英语不好对不起!

+1

“工作不正常” 是一个非常模糊的问题。在将来,请描述它做错了什么,或者你得到了什么错误。 (实际上,这会导致错误 - 缺少GROUP BY子句 - 非常明显)。 –

回答

10

当您不使用group by子句时,不能将常规列选择与集合函数混合,如count()。这工作

SELECT U.user_name, COUNT(*) AS fav_count 
FROM Users AS U 
LEFT JOIN Favorites AS F ON F.user_id = U.user_id 
group by U.user_name 
1

你不是由U.user_name

1

更改查询分组到:

SELECT U.user_name, COUNT(F.user_id) AS fav_count 
FROM Users AS U 
LEFT JOIN Favorites AS F ON F.user_id = U.user_id 
GROUP BY U.user_name 

这解决了两个问题:

  1. 您需要使用GROUP BY以获得每个用户的数量。

  2. COUNT()表达式中,您应该在LEFT JOIN表中指定一列,以便不计算空行。否则,对于没有收藏夹的用户,您将获得fav_count = 1

0

必须在选择和(使用此命令时使用group by),COUNT(),AVG(),MAX()