我在mysql数据库中有两个表
1.loc8_users (id,username,password,email,phone
)
2.loc8_users_groups (id,user_id,group_id).
这里存储分配给每个用户的组id。
我想从loc8_users_groups
表中获取用户只有一个组的所有行
最佳答案
请尝试一下:
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
s。我们得到了那些
user_id
s,但是现在我们需要那些user_id
s的用户信息,所以在这个查询结果和匹配INNER JOIN
表之间创建一个loc8_users
就可以了。