【发布时间】:2013-11-28 01:55:18
【问题描述】:
我正在运行查询以查找已从我们组织获得服务的用户,但我不希望他们的用户 ID 重复。例如,我可能在系统中有 5 次用户 id 1,但我只希望他们的 id 计为 1 次。这是我的查询:
mysql_query("SELECT COUNT(*) AS 'total'
FROM services
LEFT JOIN users
ON (services.USR_id = users.USR_id)
LEFT JOIN service_type
ON (services.SRV_type = service_type.TYPE_id)
WHERE services.MGR_orgid = $mgrorgid GROUP BY services.USR_id");
【问题讨论】:
-
不要使用
LEFT JOIN。它将返回未接收服务的行,您将对其进行计数。使用INNER JOIN。 -
计算 user_id(如下 Lajos 所建议的)会解决这个问题。话虽如此,我不确定我是否明白为什么 service_type 在查询中。
-
谢谢安德鲁。为了这个问题,我本可以删除它,但它在我以后的代码中的一些结果中使用。感谢您的意见。
标签: mysql sql duplicates left-join duplicate-removal