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

问题描述 投票:0回答:3

仅当另一个名为“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;

我得到空结果。

数据库示例:

网络用户表:

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)。有什么想法吗?

mysql select count
3个回答
1
投票

我认为你只想在子查询中使用

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;

0
投票
SELECT id, code 
FROM web_users_branches as t1
JOIN  web_users as t2
ON t2.code = t1.client_code
HAVING COUNT(*) = 1

应该可以。内部联接之后,当两个(!)表在开头都只有一条记录时,您只会得到一行。


0
投票

简单

    SELECT 
    u.`id`,
    c.`client_code`
FROM `web_users` u
LEFT JOIN `web_users_branches` c
ON u.`code` = b.`client_code` 
GROUP BY c.`client_code`
HAVING COUNT(u.`id`) < 1;

此外

code
是一个 MySQL,也可能是其他 SQL 语言函数,因此您必须将其放在引号中。

© www.soinside.com 2019 - 2024. All rights reserved.