我在mysql数据库中有两个表
1。loc8_users (id,username,password,email,phone
)
2。loc8_users_groups (id,user_id,group_id).
此处loc8_users_groups
存储分配给每个用户的组ID。
我想从loc8_users
表中获取用户只有一个组
答案 0 :(得分:1)
请试一试:
SELECT
U.*
FROM loc8_users U
INNER JOIN
(
SELECT
UG.user_id
FROM loc8_users_groups UG
GROUP BY UG.user_id
HAVING COUNT(DISTINCT UG.group_id) = 1
) AS t
ON U.id = t.user_id
<强>解释强>
SELECT
UG.user_id
FROM loc8_users_groups UG
GROUP BY UG.user_id
HAVING COUNT(DISTINCT UG.group_id) = 1;
此查询仅返回仅涉及一个组的user_id
个。
我们得到了user_id
个,但现在我们需要那些user_id
的用户信息。因此,在匹配INNER JOIN
的此查询结果和loc8_users
表之间建立user_id
就可以了。