我正在运行此查询,它可以工作,只是它没有返回我需要的内容...
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 不起作用。
最佳答案
您是否尝试过 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
关于mysql - 如何让 COUNT 按我需要的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669418/