0

我正在运行这个查询,它可以工作,只是它没有返回我需要的东西......

SELECT COUNT(up.profileOwnerUserNumber)
FROM profiles up
INNER JOIN userRatings ur
ON (ur.userRatingTargetUser = up.profileOwnerUserNumber)
WHERE ur.userRatingDateTime>(now()-INTERVAL 1 WEEK)

我从这个查询中得到 8 的回报。它计算在 (ur.userRatingTargetUser = up.profileOwnerUserNumber) 中找到的所有实例。但是 userRatings 表中有 4 个真正不同的条目 - 其他 4 个是已经找到的数字的重复项。我希望我的 COUNT 返回 4 - 找到的明显不同的 ur.userRatingTargetUser 数字的数量,而不是全部 8 个条目。

Table userRatings:
userRatingNumber int (autoincrement)
userRatingTargetUser int

Table profiles:
profileNumber int (autoincrement)
profileOwnerUserNumber int

userRatingTargetUser 和 profileOwnerUserNumber 都有可以匹配的 int 值,因为它们是使用另一个表设置的:

Table users:
userNumber int (autoincrement)

如何更改我的查询,以便不再计算这些额外记录?SELECT DISTINCT 不起作用。

4

2 回答 2

0

您是否尝试过 GROUP BY:

SELECT COUNT(up.profileOwnerUserNumber)
FROM profiles up
INNER JOIN userRatings ur
ON (ur.userRatingTargetUser = up.profileOwnerUserNumber)
WHERE ur.userRatingDateTime>(now()-INTERVAL 1 WEEK)
GROUP BY up.profileOwnerUserNumber
于 2013-10-29T21:27:23.347 回答
0

COUNT 是一个聚合函数,你应该使用 GROUP BY。

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html

于 2013-10-29T21:34:12.383 回答