Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL左连接返回重复的结果_Mysql_Sql_Duplicates_Left Join_Duplicate Removal - Fatal编程技术网

MySQL左连接返回重复的结果

MySQL左连接返回重复的结果,mysql,sql,duplicates,left-join,duplicate-removal,Mysql,Sql,Duplicates,Left Join,Duplicate Removal,我正在运行一个查询,以查找已从我们的组织接收服务的用户,但我不希望他们的用户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_typ

我正在运行一个查询,以查找已从我们的组织接收服务的用户,但我不希望他们的用户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");

删除
分组依据…
,并将
计数(*)更改为
计数(不同的usr\u id)

删除
分组依据…
,并将
计数(*)更改为
计数(不同的usr\u id)

试试这个。我删除了包含
service\u type
的部分,因为您在原始查询中对该表完全不做任何操作


试试这个。我删除了包含
service\u type
的部分,因为您在原始查询中对该表完全不做任何操作。

不要使用
左连接。它将返回不接收服务的行,您将对它们进行计数。使用
internaljoin
。计算用户id(如下Lajos所示)将解决这个问题。话虽如此,我还是不知道为什么查询中会有服务类型。谢谢Andrew。为了这个问题,我本可以删除它,但在我以后的代码中,它被用于一些结果中。我很感激您的输入。不要使用
左连接
。它将返回不接收服务的行,您将对它们进行计数。使用
internaljoin
。计算用户id(如下Lajos所示)将解决这个问题。话虽如此,我还是不知道为什么查询中会有服务类型。谢谢Andrew。为了这个问题,我本可以删除它,但在我以后的代码中,它被用于一些结果中。谢谢你的意见,谢谢你的回答,Lajos Veres。这种改变并没有完全奏效,我在过去尝试过它的几种变体,但我添加了COUNT(DISTINCT services.USR_id)并且奏效了!再次感谢,谢谢你的回答,Lajos Veres。这种改变并没有完全奏效,我在过去尝试过它的几种变体,但我添加了COUNT(DISTINCT services.USR_id)并且奏效了!再次感谢。感谢威廉·伦泽马的投入。感谢威廉·伦泽马的投入。
SELECT COUNT(*) AS total FROM users u
WHERE EXISTS (
    SELECT * FROM services s
    WHERE s.USR_id = u.USR_id
    AND s.MGR_orgid = $mgrorgid
)