繁体   English   中英

MySQL-选择联接表中的计数等于1的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM