仅当另一个名为“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)。有什么想法吗?
我认为你只想在子查询中使用
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
应该可以。内部联接之后,当两个(!)表在开头都只有一条记录时,您只会得到一行。
简单
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 语言函数,因此您必须将其放在引号中。