mysql - 如何让 COUNT 按我需要的方式工作?

标签 mysql sql

我正在运行此查询,它可以工作,只是它没有返回我需要的内容...

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/

相关文章:

java - JSP - 获取类枚举类型属性时出错

javascript - 编辑/删除 wordpress 站点中的数据表行

mysql - 在 SQL 中将列变为行

mysql - 使用 UNION ALL 时如何简化此 MySQL 查询?

mysql - 如何启用 MySQL 查询日志?

mysql - On 子句中的未知列(但确实存在)

android - 如何将 Android 应用程序与 SQL Server 连接起来?

SQL Server - 使用 LIKE 子句搜索包含国际字符的字符串

php - 如何在mysql存储过程中使用条件

sql - 如何在 PostgreSQL 中将可变小时数添加到日期?