我在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_ids。
我们得到了那些user_ids,但是现在我们需要那些user_ids的用户信息,所以在这个查询结果和匹配INNER JOIN表之间创建一个loc8_users就可以了。

09-07 21:39