Mysql查询获取与用户组匹配的所有行只有一个

时间:2016-08-09 04:28:15

标签: php mysql codeigniter-3

我在mysql数据库中有两个表

1。loc8_users (id,username,password,email,phone

2。loc8_users_groups (id,user_id,group_id).

此处loc8_users_groups存储分配给每个用户的组ID。

我想从loc8_users表中获取用户只有一个组

的所有行

1 个答案:

答案 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就可以了。