我正在运行此查询,它可以正常工作,但它不会返回我需要的内容...
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不起作用。
答案 0 :(得分: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
答案 1 :(得分:0)
COUNT是一个聚合函数,你应该使用GROUP BY。
http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html