[英]MySQL - select rows where count in joined table equals 1
仅当另一个联接的表“ web_users_branches”的行等于1时,才需要从表“ web_users”中选择行。
我现在所拥有的:
SELECT id, code from web_users
JOIN
(
SELECT client_code
FROM web_users_branches
HAVING COUNT(*) = 1
) as t2
ON web_users.code = t2.client_code;
我得到空结果。
数据库示例:
Web用户表:
id code
1 0001
2 0002
3 0003
Web用户分支表:
id client_code
1 0001
2 0001
3 0002
4 0003
5 0003
现在,在此查询之后,我应该只获得client_code为0002的用户,因为所有其他用户的client_code计数都不等于1(有x2 0003和x2 0001)。 有任何想法吗?
我认为您只想在子查询中进行group by
:
SELECT u.id, u.code
FROM web_users u JOIN
(SELECT client_code
FROM web_users_branches
GROUP BY client_code
HAVING COUNT(*) = 1
) c
ON u.code = c.client_code;
SELECT id, code
FROM web_users_branches as t1
JOIN web_users as t2
ON t2.code = t1.client_code
HAVING COUNT(*) = 1
应该管用。 内部联接后,当两个(!)表的开头都恰好有一条记录时,您只会得到一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.